在使用阿里巴巴的插件返回对象是,如果需要对其进行json格式化一下,默认是不反回null属性的,当然可以设置的,使用重载方法
JSONObject.toJSONString(travelWrite1, SerializerFeature.WriteMapNullValue
注意是使用SerializerFeature.WriteMapNullValue序列化规则
这里介绍一下JSONObject.toJSONString(Object object, SerializerFeature... features)的具体序列化机制
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
其中WriteNullStringAsEmpty序列化没有按照预期,估计是bug,或者和spring mvc框架的不兼容导致的也可能,但是用什么办法解决呢,答案是使用过滤器
private ValueFilter filter = new ValueFilter() {
@Override
public Object process(Object obj, String s, Object v) {
if(v==null)
return "";
return v;
}
};
JSON.toJSONString(jsonMap, filter)
官方项目: https://github.com/alibaba/fastjson
补充:
//json字符串数组转java集合(如果从redis获取到的是下面的格式的user,那么@ResponseBody会继续处理这个字符串,导致转义"\),如下解决方法可行
String user="[{"name":"zxx","age":18},{"name":"zcytz","age":5}]";
List = JSONArray.parseArray(user.toString(), User.class);
方便转换