0

我需要将 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,目标: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的值。

有人知道如何解决这个问题吗?提前致谢!

4

1 回答 1

0

当您在 for 循环中迭代 jsonNodesObject 时,将为 jsonNodesObject.put("name", nameString); 放置相同的值 你必须初始化 JSONObject jsonNodesObject = new JSONObject(); 在for循环里面

于 2013-10-24T13:42:30.023 回答