当前位置: 代码迷 >> 综合 >> fastjson重复引用导致 {“$ref“:“$[0]“}
  详细解决方案

fastjson重复引用导致 {“$ref“:“$[0]“}

热度:56   发布时间:2024-02-08 02:12:47.0

问题复现:

	import com.alibaba.fastjson.JSONObject;ArrayList<Map<String, Object>> list = new ArrayList<>();Map<String, Object> map = new HashMap<>();for (int i = 1; i <= 3; i++) {map.put("key"+i, i);list.add(map);}String jstr = JSONObject.toJSONString(list);System.out.println(jstr); // [{"key1":1,"key2":2,"key3":3},{"$ref":"$[0]"},{"$ref":"$[0]"}]

解决方式:

	// 1.关闭FastJson的引用检测String jstr = JSONObject.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);// [{"key1":1,"key2":2,"key3":3},{"key1":1,"key2":2,"key3":3},{"key1":1,"key2":2,"key3":3}]// 2.或在for循环内定义map,结果为: [{"key1":1},{"key2":2},{"key3":3}]  ,实际上需要的是这个结果