Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了fastjson反序列化json对象时保留null值的key大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

最近开发中遇到调用第三方web_api的功能,后端在处理json数据时使用fastjson来做反序列化,由于调用api返回的数据格式主体部分过于繁杂且没有太多可抽象的特征,所以只对头部(返回JSON最外层请求状态部分)进行了简单的分割,之后把剩下的主题内容进行数据库存储操作,并将结果返回给前端,由前端根据不同页面再做解析。

这样做的好处是,如果未来需求有变动(现在看来变动基本没跑了),我们不需要重新添加数据库表格、添加针对的实体类,且前端获得原始数据后可以更灵活的展示数据(并不是甩锅,前端也是我写)。

但在开发过程中遇到了后端解析后,部分value为null的数据key直接被fastjson干掉的情况,导致前端再次解析时遇到undefined的情况。

fastjson反序列化json对象时保留null值的key

查了很多资料,也咨询了几位前辈,得到的结论是,fastjson在序列化时可以保留null值,闷声发大财,但在反序列化时,没有相关的方法,如果想实现相关方法,只能使用以下几种解决方案:

  • 更改fastjson源码(我至今未找到fastjson完整文档,放弃了)
  • 弃用fastjson,改用jackson或gson
  • @H_502_30@

    你看,不论如何,总有解决方案,对吧?我充满希望的开始切换到jackson,在各种错误报一遍之后,我终于意识到,jackson的反序列化要求对应的实体类与json数据节点对节点,根本不适用于当前项目,所以一切又回到了起点。
    在瞎琢磨了一天后,经前辈指点,想到了一个非常奇幻的方法,就是:

    String responseState = httprequestutil.get(fullhttpURL);
    responseState = responseState.replaceAll("null","‘-‘");//responseState为json正文

    之后再正常调用

    httpState response = JSONObject.parSEObject(responseState,httpState.class);

    哇,是不是一切问题都迎刃而解了?我们只需要把json数组在反序列化前,把null替换成"-"即可,这样,文本中便没有了null,自然value为空的key也得以保留,而对这个"-"的处理也可以被前端灵活的处理,再也没有烦人的undefined错误了,爽耶。

大佬总结

以上是大佬教程为你收集整理的fastjson反序列化json对象时保留null值的key全部内容,希望文章能够帮你解决fastjson反序列化json对象时保留null值的key所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。