ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-03-14 14:03:52  阅读:208  来源: 互联网

标签:fastjson false 默认 JSON toJSONString 序列化


前言

最近在做系统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 请大家自行查阅。

标签:fastjson,false,默认,JSON,toJSONString,序列化
来源: https://www.cnblogs.com/edda/p/14532298.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有