fastjson反序列化json对象时保留null值的key
最近开发中遇到调用第三方web_api的功能,后端在处理json数据时使用fastjson来做反序列化,由于调用api返回的数据格式主体部分过于繁杂且没有太多可抽象的特征,所以只对头部(返回JSON最外层请求状态部分)进行了简单的分割,之后把剩下的主题内容进行数据库存储操作,并将结果返回给前端,由前端根据不同页面再做解析。 这样做的好处是,如果未来需求有变动(现在看来变动基本没跑了),我们不需要重新添加数据库表格、添加针对的实体类,且前端获得原始数据后可以更灵活的展示数据(并不是甩锅,前端也是我写)。 但在开发过程中遇到了后端解析后,部分value为null的数据key直接被fastjson干掉的情况,导致前端再次解析时遇到undefined的情况。
查了很多资料,也咨询了几位前辈,得到的结论是,fastjson在序列化时可以保留null值,闷声发大财,但在反序列化时,没有相关的方法,如果想实现相关方法,只能使用以下几种解决方案:
你看,不论如何,总有解决方案,对吧?我充满希望的开始切换到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错误了,爽耶。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |