前言
最近在对系统做整体数据处理,在数据处理后统一使用com.alibaba.fastjson的将对象转换为json字符串,处理后的数据在返回给前端后出现了$ref,如下:
{
"items":[
{
"$ref":"$.widgetData.seriser[0].RowDimension[0]"
},
{
...
}
]
}
原因分析
使用com.alibaba.fastjson时,具有相同引用的对象会变成类似于 "ref":".list[0]"的数据,导致前端解析出现错误。因为FastJson支持循环引用并默认缺省打开。
解决方案
查看FastJson中文手册,处理方案有两种:
- 全局配置关闭
JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.DisableCircularReferenceDetect.getMask();
- 非全局关闭
JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);