为了账号安全,请及时绑定邮箱和手机立即绑定

为毛fastjson字段为null时不输出空字符串?

为毛fastjson字段为null时不输出空字符串?

慕勒3428872 2019-03-14 10:15:21
Map < String , Object > jsonMap = new HashMap< String , Object>();  jsonMap.put("a",1);  jsonMap.put("b","");  jsonMap.put("c",null);  jsonMap.put("d","wuzhuti.cn");    String str = JSONObject.toJSONString(jsonMap);  System.out.println(str);  //输出结果:{"a":1,"b":"",d:"wuzhuti.cn"}  从输出结果可以看出,null对应的key已经被过滤掉;这明显不是我们想要的结果,这时我们就需要用到fastjson的SerializerFeature序列化属性也就是这个方法:JSONObject.toJSONString(Object object, SerializerFeature... features)SerializerFeature有用的一些枚举值QuoteFieldNames———-输出key时是否使用双引号,默认为true WriteMapNullValue——–是否输出值为null的字段,默认为false WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null现在加上Map < String , Object > jsonMap = new HashMap< String , Object>();  jsonMap.put("a",1);  jsonMap.put("b","");  jsonMap.put("c",null);  jsonMap.put("d","wuzhuti.cn");    String str = JSONObject.toJSONString(jsonMap,SerializerFeature.WriteMapNullValue);  System.out.println(str);  //输出结果:{"a":1,"b":"","c":null,"d":"wuzhuti.cn"}  但是,如果把WriteNullStringAsEmpty也加进去,为毛不起作用?!?!?String str = JSONObject.toJSONString(jsonMap,SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty);  System.out.println(str);  //输出结果:{"a":1,"b":"","c":null,"d":"wuzhuti.cn"}  目前的解决办法是加一个过滤器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)不过,心里不爽,为毛不起作用啊?SerializerFeature.WriteNullStringAsEmptyfastjson github: https://github.com/alibaba/fastjson
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

你列举的大部分SerializerFeature主要是针对Object对象序列化转换时的情况(这个时候才能判断参数的类型),而在Map中,你放进入了null就是null,进行序列化时已经没法判断它原来的类型了,所以并没有起作用。要使用SerializerFeature里相关null的参数,应该传入对象进行序列化。


查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 2547 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信