出现$ref: "$.list[2]"的原因是因为循环引用/内存对象重复。

$ref”:”..” 上一级
“$ref”:”@” 当前对象,也就是自引用
“$ref”:”$” 根对象
{"$ref":"../.."} 引用父对象的父对象
“$ref”:”$.children.0” 基于路径的引用,相当于root.getChildren().get(0)

那么什么是重复/循环引用?

  简单说,重复引用就是一个集合/对象中的多个元素/属性同时引用同一对象,循环引用就是集合/对象中的多个元素/属性存在相互引用导致循环。

解决办法关闭循环引用

 

 

   JSONObject.toJSONString(map,SerializerFeature.DisableCircularReferenceDetect);//map是结果