美文网首页
【采坑笔记】fastJson返回数据包含$ref 字符

【采坑笔记】fastJson返回数据包含$ref 字符

作者: 向天葵 | 来源:发表于2019-07-15 15:49 被阅读0次

问题描述

在自己的项目中,通过FastJson获取数据时,在数据中出现$ref等奇怪的字符,导致前端无法正常解析JSON数据。


不正常JSON数据

ru

数据对象

项目中包含两个一对多关系的对象,部门Dept和员工Emp
他们具有一对多关系,包含关系如图.


aaa.png

问题产生流程

当向后台请求EMP数据时,前面两个Emp中的DEPT还正常,当请求第三个JSON时,就出现了这个ref,这个ref表示的意义是这个dept与根引用的第一个(0)的dept相同。
这是FastJson表示循环引用时一种节约内存的方法。通过这样的标识符来描述这个JSON对象,可以节省浏览器内存

解决方法

关闭这个循环应用机制即可。
配置一下自己的FastConfig,在FastJsonConfig加入SerializerFeature.DisableCircularReferenceDetect这个配置即可解决。


aaa.png

附:循环引用

循环引用:当一个对象包含另一个对象时,fastjson就会把该对象解析成引用。引用是通过$ref标示的,下面介绍一些引用的描述

  • "$ref":".." 上一级

  • "$ref":"@" 当前对象,也就是自引用

  • "ref":"" 根对象

  • "ref":".children.0" 基于路径的引用,相当于 root.getChildren().get(0)

相关文章

网友评论

      本文标题:【采坑笔记】fastJson返回数据包含$ref 字符

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