在使用FastJson进行开发过程中,当JSONArray添加使用注入的对象是,会出现重复引用的问题,将其打印输出后内容如下:
[{"createTime":"2019-10-08 11:18:08","id":9,"name":"姓名"},{"$ref":"$[0]"},{"$ref":"$[0]"},{"$ref":"$[0]"},{"$ref":"$[0]"},{"$ref":"$[0]"},{"$ref":"$[0]"},{"$ref":"$[0]"},{"$ref":"$[0]"},{"$ref":"$[0]"}]
其使用的代码如下:
@Autowired
private TestUtil testUtil;
@RequestMapping("/RepetitiveCitation")
@ResponseBody
public String RepetitiveCitation(){
String returnstr=null;
List listArr = new JSONArray();
for(int i=0;i<10;i++){
testUtil.setId((long)i);
testUtil.setName("姓名");
testUtil.setCreateTime(new Date());
listArr.add(testUtil);
}
System.out.println(listArr.toString());
return listArr.toString();
}
解决方法:使用时需重置该对象,即添加testUtil=new TestUtil();
,修改后的代码如下:
@Autowired
private TestUtil testUtil;
@RequestMapping("/RepetitiveCitation")
@ResponseBody
public String RepetitiveCitation(){
String returnstr=null;
List listArr = new JSONArray();
for(int i=0;i<10;i++){
testUtil=new TestUtil();
testUtil.setId((long)i);
testUtil.setName("姓名");
testUtil.setCreateTime(new Date());
listArr.add(testUtil);
}
System.out.println(listArr.toString());
return listArr.toString();
}