美文网首页
Java-Note-fastjson循环引用的问题

Java-Note-fastjson循环引用的问题

作者: 1nfinity | 来源:发表于2018-11-01 08:17 被阅读0次
  • 今天做项目时遇到一个问题: 浏览器接受到的 response 的 content 里面本应该是 json 字符串的地方变成了这样的字符串: {"j2":{"ja1":[{"j3":"j33"},{"$ref":"$.j2.ja1[0]"}],"ja2":[{"$ref":"$.j2.ja1[0]"},{"$ref":"$.j2.ja1[0]"}]}}
    • 最后找到原因: 在 fastjson 序列化的过程中默认开启循环引用, 这时 JSONObject 对象内的键值对会引用前面键值对中已存在的对象, 用类似{"$ref":"$.j2.ja1[0]"}的方式. 其中$代表根路径, .*.代表引用路径, ja1[0]代表值位于 JSON 数组的位置
    • 解决方法:
      1. 第一种: 保证 JSONObject 对象中不出现两个以上相同的对象
      2. 第二种: 在将 JSONObject 对象转换成 JSON 字符串的过程中加入 config 参数: SerializerFeature.DisableCircularReferenceDetect 用来禁止循环引用检测

相关文章

网友评论

      本文标题:Java-Note-fastjson循环引用的问题

      本文链接:https://www.haomeiwen.com/subject/ndzatqtx.html