1. 程式人生 > 其它 >fastjson-物件轉json字串時保留空欄位SerializerFeature無效的問題

fastjson-物件轉json字串時保留空欄位SerializerFeature無效的問題

技術標籤:jsonjava

需求簡述

將java實體類轉換為json字串,空欄位也需要轉換。

問題說明

用fastjson將java物件轉json字串時預設去除空欄位,網上查閱一番,都說轉的時候新增SerializerFeature.WriteNullStringAsEmpty引數就行,親測了一下,沒有達到效果(原因未知)。
如下例子:AssessReq 還有個caseId欄位特意不設定值

AssessReq ar= new AssessReq();
ar.setAge(11);
ar.setUsername("test");
logger.info("Json =>> "
+ JSON.toJSONString(ar, SerializerFeature.WriteNullStringAsEmpty);

輸出結果:

testJson =>> {"age":11,"username":"test"}

結果可見,caseId欄位並有保留。SerializerFeature.WriteMapNullValue 也試過了也是不不行。

解決方案

後面換了種方法才解決的,解決方法如下:

// 自定義空欄位處理規則
ValueFilter filter = (obj, s, v) -> {
	if
(v == null) { logger.info("s =>> "+s); return ""; } return v; }; AssessReq ar= new AssessReq(); ar.setAge(11); ar.setUsername("test"); logger.info("testJson =>> " + JSON.toJSONString(ar, filter));

輸出結果:

testJsonn =>> {"age":11,"caseId":"","username":"test"}

結果可見,是可以實現預期的效果的。