json解析结果部分属性为null的问题
Posted wanshiming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json解析结果部分属性为null的问题相关的知识,希望对你有一定的参考价值。
在协作开发时,从接口获取到的json实体部分为空,但是在调试时发现原对象没有任何问题,但是经过解析成为json后,部分属性变为:
"$ref":"$.*******“
改变解析方式为Gson问题解决,经查是fastjson在解析json时,会将json中相同的内容改为引用导致
具体描述如下:
以下内容转自:https://www.cnblogs.com/studyitskill/p/9081608.html
JSONArray 类型 如果我们往里面add数据的时候 如果数据相同,那么就会被替换成 $ref: 也就是被简化了 因为数据一样所直接 指向上一条数据
- "$ref":".." 上一级
- "$ref":"@" 当前对象,也就是自引用
- "$ref":"$" 根对象
- "$ref":"$.children.0" 基于路径的引用,相当于 root.getChildren().get(0)
例如下面这3个银行卡都是建行的,那么就会出现这个问题,因为bank信息完全一致
因为我们要在前端展示数据 所以这样肯定不对 ,那么如果解决呢
网上都说是加上SerializerFeature.DisableCircularReferenceDetect
1 首先把JSONArray 转成string 这个时候加上SerializerFeature.DisableCircularReferenceDetect
JSONArray.toJSONString(userBankJsonArray, SerializerFeature.DisableCircularReferenceDetect)
2 因为之前是JSON格式的 所以我们还要把string转成JSON
JSONObject.parse(JSONArray.toJSONString(userBankJsonArray, SerializerFeature.DisableCircularReferenceDetect))
然后在传到前端 前端解析就没问题了
以上是关于json解析结果部分属性为null的问题的主要内容,如果未能解决你的问题,请参考以下文章
hive 踩坑 get_json_object 返回NULL或部分可解析部分解析不了