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