平常在写json的报文封装时,没有这个错误,第一次遇到不知道是个鸟,所以后来查了一下,重复引用一个fastjson对象就会出现这个问题,其实这不是一个编译或者运行错误,也不是一个fastjson转化错误,而是fastjson自行默认对重复的引用使用
ref方式。其实在fastjson包内已经有限制这种问题出现的方法,下面就展示一下。
使用FastJson的JSONArray类型作为返回数据,当像JSONArray对象中添加JSONObject对象,而JSONObject对象中包含相同的节点数据时,FastJson会防止返回数据栈溢出的问题,自动将JSONArray中相同的节点数据使用引用方式代替
json循环引用错误
fastjson报$ref": KaTeX parse error: Expected '}', got 'EOF' at end of input: …indexs[0] 或 [{"ref":"$[0]"}] 循环引用问题
{
"function_id": "54",
"function_name": "行业点取值函数",
"indexs": [
{
"$ref": "$.data[2].indexs[0]"
},
{
"$ref": "$.data[2].indexs[1]"
}
]
}
关闭循环引用
JSONArray list = HelloService.getHelloWord();
JSONObject json = new JSONObject();
JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);
//注意,重要的是下面这一句
JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetact);
//意思是禁用ref重复引用
处理后
{
"function_id": "54",
"function_name": "行业点取值函数",
"indexs": [
{
"name": "你猜",
"nickName": "你猜猜",
"helloWord": "你猜的都对",
},
{
"name": "你猜",
"nickName": "你猜猜",
"helloWord": "你猜的都对",
}
]
}
问题解决!!!
转载请注明出处!