前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSON.toJSONString中序列化空字符串遇到的坑

JSON.toJSONString中序列化空字符串遇到的坑

作者头像
一枝花算不算浪漫
发布2018-10-15 12:45:26
2.6K0
发布2018-10-15 12:45:26
举报

前言

最近在做系统Bug修复时遇到了一个问题,调用其他服务时传递的参数和自己预先的不一致,例如Map中有10条记录,然后使用JSON.toJSONString 包装后进行网络传递,但是通过调试发现接收方只收到了5条数据。经过追溯发现原来JSON.toJSONString 这里有坑。所以现在总结记录一下。

FastJson简介

首先,介绍一下fastjson。fastjson是由alibaba开源的一套json处理器。与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化方式相比,有比较明显的性能优势。详情可以参考fastjson提供的benchmark。

https://github.com/eishay/jvm-serializers/wiki

采坑实例

上面已经说到我遇到问题的描述了,下面直接看代码实例:

这里箭头指向的位置,因为sent-1 中的value为空,所以并未打印出来。 第二个使用:JSON.toJSONString(map, SerializerFeature.WriteMapNullValue) 指定序列化方式就打印出来了。

所以大家使用的时候一定切记这里的坑。下面再看看fastJson一些默认一下属性:

JSON.toJSONString 源码:

然后看下SerializerFeature属性:

名称

含义

QuoteFieldNames

输出key时是否使用双引号,默认为true

UseSingleQuotes

使用单引号而不是双引号,默认为false

WriteMapNullValue

是否输出值为null的字段,默认为false

WriteEnumUsingToString

Enum输出name()或者original,默认为false

SortField

按字段名称排序后输出。默认为false

WriteTabAsSpecial

把\t做转义输出,默认为false

PrettyForma

结果是否格式化,默认为false

WriteClassName

序列化时写入类型信息,默认为false。反序列化是需用到

......

......

看到这里大家可以针对自己的需求选择不同序列化格式,更多SerializerFeature 请大家自行查阅。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • FastJson简介
  • 采坑实例
    • JSON.toJSONString 源码:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档