fastjson Map SerializerFeature无效

发布于 2022-01-03 18:54:40 字数 1000 浏览 646 评论 6

@温少

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

草莓味的萝莉 2022-01-08 00:25:50

引用来自“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时才生效

鹤舞 2022-01-08 00:25:20

我这两天一直在跟踪这个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时才生效

緦唸λ蓇 2022-01-08 00:21:09

引用来自“GinKo”的评论

我都跟你说了,SerializerFeature.WriteMapNullValue定制项是说如果Map是null值,则序列化为空字符串,如果Map内部put的值是null,依照目前的版本是没办法的。你可以自己定制一套序列化,特殊处理。

卸妝后依然美 2022-01-08 00:10:30

我都跟你说了,SerializerFeature.WriteMapNullValue定制项是说如果Map是null值,则序列化为空字符串,如果Map内部put的值是null,依照目前的版本是没办法的。你可以自己定制一套序列化,特殊处理。

爱你是孤单的心事 2022-01-07 23:01:30

引用来自“GinKo”的评论

SerializerFeature.WriteMapNullValue

Map类型的属性为null值是按照empty输出。而不是MapValueNullAsEmpty..需要你自己定制序列化。

执手闯天涯 2022-01-05 18:00:43

SerializerFeature.WriteMapNullValue

Map类型的属性为null值是按照empty输出。而不是MapValueNullAsEmpty..需要你自己定制序列化。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文