问题出在JSONArray在for循环中对add的对象的循环引用
解决方法:整合网上的几种方法
一:取消循环监测,单次处理为字符串:String a = JSON.toJSONString(attNumArray, SerializerFeature.DisableCircularReferenceDetect)
而后可以依据需要转回JSONArray:JSONArray.parse(a);
二:在for循环中实例要add的对象,例:
JSONObject jsonObject = new JSONObject();
JSONArray attNumArray = new JSONArray();
Integer attNum = null;
for (int i = 0; i < sul.size(); i++) {
jsonObject = new JSONObject(); //关键
attNum = 6;
jsonObject.put("attNum", attNum);
jsonObject.put("subContractorName", "分包名称");
attNumArray.add(jsonObject);
}
三、取消循环引用检测,方法里单次处理:@JSONField(serialzeFeatures = {SerializerFeature.DisableCircularReferenceDetect}) 加在方法上(该方法本人暂未测试是否可行)