fastjson Map SerializerFeature无效
fastJson 对于 Map的features 指定是无效的吧?
比如,我在features 指定了,WriteNullStringAsEmpty,经测试无效,fastjson使用的是最新版本。
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, features);
System.out.println(str);
private static final SerializerFeature[] features = { SerializerFeature.SortField,//排序字段
SerializerFeature.WriteMapNullValue, // 输出空置字段
SerializerFeature.WriteNullListAsEmpty, // list字段如果为null,输出为[],而不是null
SerializerFeature.WriteNullNumberAsZero, // 数值字段如果为null,输出为0,而不是null
SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果为null,输出为false,而不是null
SerializerFeature.WriteNullStringAsEmpty // 字符类型字段如果为null,输出为"",而不是null
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
引用来自“yuyang109351618”的评论
我这两天一直在跟踪这个bug ,这是fastjson1.2.58出现的bug 降级到1.2.29就好用了。 1.2.58版本com.alibaba.fastjson.serializer.MapSerializer 211行 应该是bug 1.2.29版本处是
if (value == null) {
if (!out.isEnabled(SerializerFeature.WRITE_MAP_NULL_FEATURES)) {
continue;
}
}
而1.2.58版本为
if (value == null &&
!out.isEnabled(SerializerFeature.WriteMapNullValue)) {
continue;
}
应该是一个bug。 所有的定制皆不生效 只有指定WriteMapNullValue时才生效
我这两天一直在跟踪这个bug ,这是fastjson1.2.58出现的bug 降级到1.2.29就好用了。 1.2.58版本com.alibaba.fastjson.serializer.MapSerializer 211行 应该是bug 1.2.29版本处是
if (value == null) {
if (!out.isEnabled(SerializerFeature.WRITE_MAP_NULL_FEATURES)) {
continue;
}
}
而1.2.58版本为
if (value == null &&
!out.isEnabled(SerializerFeature.WriteMapNullValue)) {
continue;
}
应该是一个bug。 所有的定制皆不生效 只有指定WriteMapNullValue时才生效
引用来自“GinKo”的评论
我都跟你说了,SerializerFeature.WriteMapNullValue定制项是说如果Map是null值,则序列化为空字符串,如果Map内部put的值是null,依照目前的版本是没办法的。你可以自己定制一套序列化,特殊处理。
我都跟你说了,SerializerFeature.WriteMapNullValue定制项是说如果Map是null值,则序列化为空字符串,如果Map内部put的值是null,依照目前的版本是没办法的。你可以自己定制一套序列化,特殊处理。
引用来自“GinKo”的评论
SerializerFeature.WriteMapNullValue
Map类型的属性为null值是按照empty输出。而不是MapValueNullAsEmpty..需要你自己定制序列化。
SerializerFeature.WriteMapNullValue
Map类型的属性为null值是按照empty输出。而不是MapValueNullAsEmpty..需要你自己定制序列化。