fastjson-物件轉json字串時保留空欄位SerializerFeature無效的問題
阿新 • • 發佈:2020-12-30
需求簡述
將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"}
結果可見,是可以實現預期的效果的。