zoukankan      html  css  js  c++  java
  • json解析结果部分属性为null的问题

    在协作开发时,从接口获取到的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))

    然后在传到前端  前端解析就没问题了   

  • 相关阅读:
    spring----AOP 和 AspectJ
    js----wangEditor
    java易错题----获取路径问题
    Spring MVC----Validation(数据校验)
    java----lombok插件
    jquery----Ztree
    java web----跨域请求解决办法
    git----gitHub和电脑绑定的步骤
    js----DateTime工具
    SQLSTATE[HY000]: General error: 1366 Incorrect string value: 'xF0x9Fx90xA3xF0x9F...' for column
  • 原文地址:https://www.cnblogs.com/wanshiming/p/11122246.html
Copyright © 2011-2022 走看看