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 数组的位置
- 解决方法:
- 第一种: 保证 JSONObject 对象中不出现两个以上相同的对象
- 第二种: 在将 JSONObject 对象转换成 JSON 字符串的过程中加入 config 参数: SerializerFeature.DisableCircularReferenceDetect 用来禁止循环引用检测
本文标题:Java-Note-fastjson循环引用的问题
本文链接:https://www.haomeiwen.com/subject/ndzatqtx.html
网友评论