fastjson默认将对象转为json 不保留值为null的属性,如果需要保留使用以下方式
fastjson1 保留空值属性
属性为null原样输出使用WriteMapNullValue
JSON.toJSONString(data, SerializerFeature.WriteMapNullValue)
属性为null转为空字符输出使用WriteNullStringAsEmpty
JSON.toJSONString(data, SerializerFeature.WriteNullStringAsEmpty)
fastjson2 保留空值属性
属性为null原样输出使用WriteMapNullValue
JSON.toJSONString(data, SerializerFeature.WriteMapNullValue)
转为空字符使用NullAsDefaultValue
JSON.toJSONString(data, SerializerFeature.NullAsDefaultValue)
保留空值属性,转化为自定义字符串
有时候我们在将对象转为json字符串的时候,需要将属性值的null转换为自定义字符串,或者实现字段脱敏等操作,可以利用valueFilter实现替换。
fastJson1 中可以直接使用valueFilter
import com.alibaba.fastjson.serializer.ValueFilter;
String s = JSON.toJSONString(data, (ValueFilter)(object, ame, value)-> {
if(value == null){
return " ";
}
return value;
});
fastJson2 中可以需要配合 JSONWriter.Feature.WriteMapNullValue
import com.alibaba.fastjson2.filter.ValueFilter;
String s = JSON.toJSONString(data, (ValueFilter)(object, ame, value)-> {
if(value == null){
return " ";
}
return value;
}, JSONWriter.Feature.WriteMapNullValue);