fastjson-对象转json字符串时保留空字段SerializerFeature无效的问题
程序员文章站
2022-06-28 18:02:36
需求简述将java实体类转换为json字符串,空字段也需要转换。问题说明用fastjson将java对象转json字符串时默认去除空字段,网上查阅一番,都说转的时候添加SerializerFeature.WriteNullStringAsEmpty参数就行,亲测了一下,没有达到效果(原因未知)。如下例子:AssessReq 还有个caseId字段特意不设置值AssessReq ar= new AssessReq();ar.setAge(11);ar.setUsername("test");l...
需求简述
将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"}
结果可见,是可以实现预期的效果的。
本文地址:https://blog.csdn.net/qq_21758475/article/details/111892009
上一篇: elementUI的表格单元格合并
下一篇: 中国专利查询官方网站俩只