今天遇到一个问题,前端传过来的json串中有些属性值是null,经过fastjson的JSON.parseObject后,属性值变成了"null",然后在我的代码处理后,再转换出来的json串中,这些属性值就变成"null"了,然后后台项目的mapper文件里只判断了null,没有空字符串""和"null"。在一个已上线的项目中,既不能要求前端规范数据格式,也不能要求后台项目修改他们的mapper文件,所以只能自己想办法了。
不过功夫不负有心人,最终还是被我解决了。下面上代码:
定义一个静态的ValueFilter
private static ValueFilter valueFilter = new ValueFilter() {
@Override
public Object process(Object obj, String s, Object v) {
if ("null".equals(v) {
return null;
}
return v;
}
};
然后在代码中调用它:
String jsonStr = JSON.toJSONString(jsonMap, valueFilter, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteMapNullValue);
如果不想显示值为null的属性,可以使用下面的方法:
String jsonStr = JSON.toJSONString(jsonMap, valueFilterWriteMapNullValue);
这样,自定义格式转换jsonObject的功能就实现了。
最后修改于 2019-03-01 17:18:58
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

