问题复现:
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}] ,实际上需要的是这个结果