我需要将ArrayList中的数据转换为JSON文件,然后使用JSON.simple。一切都很好,除了一件小事我想得到像...... {source:0,target:1},{source:0,target:1},{source:0,target :2},{source:0,target:3} ......但它返回...... {source:0,target:16},{source:0, target:16},{source:0,target:16} ......我的solution.size()是17。 这是我的代码:
JSONObject jsonObject = new JSONObject();
JSONObject jsonNodesObject = new JSONObject();
JSONObject jsonEdgesObject = new JSONObject();
JSONArray jsonNodesArray = new JSONArray();
JSONArray jsonEdgesArray = new JSONArray();
String instString = solutions.get(0).get("institution");
jsonNodesObject.put("name", instString);
// extract name and institution from ArrayList
for (int i = 0; i < solutions.size(); i++)
{
HashMap<String, String> eleHashMap= solutions.get(i);
String nameString = eleHashMap.get("name");
jsonNodesObject.put("name", nameString);
jsonNodesArray.add(jsonNodesObject);
jsonEdgesObject.put("source", 0);
jsonEdgesObject.put("target", i);
jsonEdgesArray.add(jsonEdgesObject);
}
jsonObject.put("nodes", jsonNodesArray);
jsonObject.put("edges", jsonEdgesArray);
System.out.println(jsonObject);
似乎在每个for循环中,它刷新了所有 jsonEdgesArray 的 target:i 的值。
任何人都知道如何解决这个问题?提前谢谢!
答案 0 :(得分:0)
作为for循环中的迭代jsonNodesObject,将为jsonNodesObject.put(“name”,nameString)添加相同的值;你必须初始化JSONObject jsonNodesObject = new JSONObject();在for循环中