今天遇到一个问题,前端传过来的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
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇