在idea运行正常,jmeter运行打印时显示"$ref":"$[0]"
看代码
JSONArray jsonArray=JSONArray.parseArray(a);
JSONArray jsonArray1=new JSONArray();
JSONObject jsonObject=new JSONObject();
String testId;
for (int i=0;i<jsonArray.size();i++){
testId=jsonArray.getJSONObject(i).getString("id");
jsonObject.put("id",testId);
jsonObject.put("assessType",1);
jsonObject.put("isSubmit",1);
jsonArray1.set(i,jsonObject);
}
思索半宿,发现是由于jsonObject是在循环外new的,然后在循环中put值并加入,因此jsonArray1中存放的一直是同一对象,fastjson对于重复引用便会出现"$ref":"$[0]
解决办法:
JSONObject jsonObject=new JSONObject();放在循环里创建
JSONArray jsonArray=JSONArray.parseArray(a);
JSONArray jsonArray1=new JSONArray();
String testId;
for (int i=0;i<jsonArray.size();i++){
JSONObject jsonObject=new JSONObject();
testId=jsonArray.getJSONObject(i).getString("id");
jsonObject.put("id",testId);
jsonObject.put("assessType",1);
jsonObject.put("isSubmit",1);
jsonArray1.set(i,jsonObject);
}
完美解决