码迷,mamicode.com
首页 > Web开发 > 详细

json解析结果部分属性为null的问题

时间:2019-07-02 19:13:18      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:ons   相同   ring   https   nbsp   col   属性   fas   mamicode   

在协作开发时,从接口获取到的json实体部分为空,但是在调试时发现原对象没有任何问题,但是经过解析成为json后,部分属性变为:

"$ref":"$.*******“

改变解析方式为Gson问题解决,经查是fastjson在解析json时,会将json中相同的内容改为引用导致

 

具体描述如下:

以下内容转自:https://www.cnblogs.com/studyitskill/p/9081608.html

JSONArray  类型  如果我们往里面add数据的时候 如果数据相同,那么就会被替换成 $ref:   也就是被简化了 因为数据一样所直接 指向上一条数据

 

循环引用:当一个对象包含另一个对象时,fastjson就会把该对象解析成引用。引用是通过$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的问题

标签:ons   相同   ring   https   nbsp   col   属性   fas   mamicode   

原文地址:https://www.cnblogs.com/wanshiming/p/11122246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!