使用JSONSimple写入带有for循环的json文件时出错

时间:2013-09-10 13:51:48

标签: java json simplejson

我需要将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 的值。

任何人都知道如何解决这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:0)

作为for循环中的迭代jsonNodesObject,将为jsonNodesObject.put(“name”,nameString)添加相同的值;你必须初始化JSONObject jsonNodesObject = new JSONObject();在for循环中