Java JSON写入jsonarray循环

火刃

我正在尝试使用以下代码写入json文件:

    JSONObject obj = new JSONObject();
    JSONArray dlist = new JSONArray();
    JSONObject data = new JSONObject();
    //Data
    data.put("path", gamePath);
    data.put("lastprofile", profileList.getSelectedValue());
    dlist.add(data);

    obj.put("data", dlist);

    //Profiles
    JSONArray profileList = new JSONArray(); //profiles list
    JSONObject profileListObj = new JSONObject(); //profiles
    JSONArray profileDataList = new JSONArray(); //profile data list
    JSONObject profileData = new JSONObject(); //profile data

    //We now have to cycle every profile and create the data, then add it to the list.
    for(int i=profiles.size()-1; i>=0; i--) {
        Profile p = profiles.get(i);
        profileData.put("name", p.name);
        profileData.put("mods", p.mods.toString());
        System.out.println(p.name + "..." + p.mods.toString());
        profileDataList.add(profileData);
        System.out.println("list.." + profileDataList.toString());
        profileListObj.put("profile"+i, profileDataList);
        //obj.put("profile"+i, profileDataList);

        //profileList.add(profileListObj);
        //profileListObj.clear();
        //profileDataList.clear();
        //profileData.clear();
    }
    //profileList.add(profileListObj);
    obj.put("profiles", profileDataList);

问题出在哪里,您会看到我修改过的一些评论行。是整个数组最终将保存为最后一个对象配置文件。

我想拥有的是:

profiles 
-profile1
--data
--data
-profile2
--data
--data etc, 

这是使用上面的示例代码产生的结果。

{
    "data" : [{
            "path" : "tempPath",
            "lastprofile" : "Profile1"
        }
    ],
    "profiles" : [{
            "name" : "Profile1", //This one is correct
            "mods" : "[base, mcconfig, mcconfig-startbonus]"
        }, {
            "name" : "Profile1", //This one should be profile2
            "mods" : "[base, mcconfig, mcconfig-startbonus]" //different mods...
        }, {
            "name" : "Profile1", //this one should be profile3
            "mods" : "[base, mcconfig, mcconfig-startbonus]" //different mods...
            }, {
            "name" : "Profile1",
            "mods" : "[base, mcconfig, mcconfig-startbonus]"
        }, {
            "name" : "Profile1",
            "mods" : "[base, mcconfig, mcconfig-startbonus]"
        }
    ]
}

我已经修改了多个注释行,以确保所有数据正确无误,只是没有按配置文件组织。我正在尝试使它尽可能整洁,使其井井有条。

我得出的结论是,我无法将某些内容放入具有相同密钥的profileData中。因此,它将第一个输入重新添加到profileDataList,并在此之后的每个循环中继续进行。

仅提供更多信息:每个profileData名称和mod都有不同的字符串。有5个不同的配置文件。且配置文件应命名为配置文件,并在配置文件后面带有相应的编号。

塞勒姆

当您这样做时,profileData.put("name", p.name);您将覆盖同一对象,因此最终您将获得一个数组,其中包含对同一对象的3个引用。要修复它,请在循环内创建一个新实例(请参见注释):

for(int i=profiles.size()-1; i>=0; i--) {
    Profile p = profiles.get(i);
    profileData = new JsonObject(); // <- create a new object in each iteration
    profileData.put("name", p.name);
    profileData.put("mods", p.mods.toString());
    System.out.println(p.name + "..." + p.mods.toString());
    profileDataList.add(profileData);
    System.out.println("list.." + profileDataList.toString());
    profileListObj.put("profile"+i, profileDataList); // Is this really needed?   
}
//profileList.add(profileListObj);
obj.put("profiles", profileDataList);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java JSON写jsonarray循环

来自分类Dev

Java:循环遍历 JSON 字符串(无法转换为 JsonArray (gson))

来自分类Dev

JSON写入Java列表

来自分类Dev

如何使用Java将for循环中的所有JSON对象写入文本文件

来自分类Dev

如何在Java中将JSONObject写入其中包含JSONArray的文件?

来自分类Dev

Java Servlet 在无限循环中写入图像

来自分类Dev

Json对象数组以Java逐行写入

来自分类Dev

使用gson在Java中写入json文件

来自分类Dev

如何在 Java 中将 JSON 写入文件

来自分类Dev

Java循环遍历Json数组?

来自分类Dev

How do I parse a JSONArray in Java with Json.simple?

来自分类Dev

如何使用Json.simple解析Java中的JSONArray?

来自分类Dev

如何从java中的javax.json.JsonArray删除元素?

来自分类Dev

Java中的JSONArray中的JSONArray

来自分类Dev

Java:Excel/Json - 如何读取 Json 文件并写入 Excel

来自分类Dev

通过Java中的JSONArray

来自分类Dev

Json和Java-循环参考

来自分类Dev

如何使用Java在Json中循环?

来自分类Dev

将json写入String而不是Java中的文件

来自分类Dev

使用Java和Jackson将数组写入JSON

来自分类Dev

使用杰克逊将数据从json写入Java对象

来自分类Dev

如何将此 JSON 写入 Elasticsearch Java API?

来自分类Dev

如何在 Java 中将表数据写入 JSON 文件?

来自分类Dev

PHP循环从SQLite读取并写入数组/ JSON

来自分类Dev

无法将类型为java.lang.String的JSON异常值连接转换为JSONArray

来自分类Dev

android中的java.lang.NoSuchMethodError:org.json.JSONArray错误

来自分类Dev

无法将类型为java.lang.String的Android片段JSON <!DOCTYPE转换为JSONArray

来自分类Dev

读取具有多个元素的 JSON 数组并将值附加到 JsonArray / JAVA

来自分类Dev

如何在将声音写入文件之前不使用Java中的'clip'循环声音

Related 相关文章

  1. 1

    Java JSON写jsonarray循环

  2. 2

    Java:循环遍历 JSON 字符串(无法转换为 JsonArray (gson))

  3. 3

    JSON写入Java列表

  4. 4

    如何使用Java将for循环中的所有JSON对象写入文本文件

  5. 5

    如何在Java中将JSONObject写入其中包含JSONArray的文件?

  6. 6

    Java Servlet 在无限循环中写入图像

  7. 7

    Json对象数组以Java逐行写入

  8. 8

    使用gson在Java中写入json文件

  9. 9

    如何在 Java 中将 JSON 写入文件

  10. 10

    Java循环遍历Json数组?

  11. 11

    How do I parse a JSONArray in Java with Json.simple?

  12. 12

    如何使用Json.simple解析Java中的JSONArray?

  13. 13

    如何从java中的javax.json.JsonArray删除元素?

  14. 14

    Java中的JSONArray中的JSONArray

  15. 15

    Java:Excel/Json - 如何读取 Json 文件并写入 Excel

  16. 16

    通过Java中的JSONArray

  17. 17

    Json和Java-循环参考

  18. 18

    如何使用Java在Json中循环?

  19. 19

    将json写入String而不是Java中的文件

  20. 20

    使用Java和Jackson将数组写入JSON

  21. 21

    使用杰克逊将数据从json写入Java对象

  22. 22

    如何将此 JSON 写入 Elasticsearch Java API?

  23. 23

    如何在 Java 中将表数据写入 JSON 文件?

  24. 24

    PHP循环从SQLite读取并写入数组/ JSON

  25. 25

    无法将类型为java.lang.String的JSON异常值连接转换为JSONArray

  26. 26

    android中的java.lang.NoSuchMethodError:org.json.JSONArray错误

  27. 27

    无法将类型为java.lang.String的Android片段JSON <!DOCTYPE转换为JSONArray

  28. 28

    读取具有多个元素的 JSON 数组并将值附加到 JsonArray / JAVA

  29. 29

    如何在将声音写入文件之前不使用Java中的'clip'循环声音

热门标签

归档