一、问题描述
{
"schema": {
"originalRef": "Result«object»",
"$ref": "#/definitions/Result«object»"
}
}
入参字符串是json格式,可直接转为JSONObject,由于某个字段是$ref,导致调用fastjson的JSON.parseObject(String text)方法出现问题。
1、问题一:$ref在第一个字段,转化api报错:
com.alibaba.fastjson.JSONException: syntax error
2、问题二:$ref在第二个字段,则转化api未报错,但是同级所有字段全部消失,只留下$ref这个字段,且值变为@:

注意:若返回转化后的json给前端,则会报错:Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: 统一返回响应类路径)
二、解决思路
从报错情况和fastjson使用经验判断,$ref是fastjson声明引用属性名,相当于内置字段,外来字段重名会导致转化逻辑。所以考虑处理"引用"这个问题。

本文探讨了Fastjson在处理JSON对象时遇到的 `$ref` 引用问题,如何通过Feature.DisableCircularReferenceDetect特性解决转化逻辑冲突,并提及不同Fastjson版本对这一规则的影响。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



