有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将JSON文件密钥与组织保持有序。json?

我一直在摆弄JSON文件保存系统,每次我保存它时,键的顺序都与我在JSON文件中的顺序不同。无论顺序如何,程序仍然可以正常运行,但是随着文件中的项目列表变大,如果我知道文件中的小项目的确切位置,那么编辑文件中的小项目就更容易了。这是我的密码:

public static void CreateJSON() throws JSONException {
    // List<String> projList = UpgradeJSON.GetProjList();
    // List<String> statsList = UpgradeJSON.GetStatsList();

    List<String> projList = new ArrayList<>();
    List<String> statsList = new ArrayList<>();

    projList.add("Reave Bomb");
    projList.add("Purple Fire");
    projList.add("Twilight Ball");

    statsList.add("speed");
    statsList.add("damage");

    JSONObject selfJSON = new JSONObject();
    JSONObject upgradeJSON = new JSONObject();

    for (String i : projList) {
        JSONObject projObj = new JSONObject();
        for (String j : statsList) {
            projObj.put(j.toLowerCase(), 1);
        }
        upgradeJSON.put(i, projObj);
    }
    selfJSON.put("name", "");
    selfJSON.put("credits", 500);
    selfJSON.put("health", 100);
    selfJSON.put("aura", 100);

    selfJSON.put("upgrades", upgradeJSON);

    System.out.println(selfJSON.toString());

    try (FileWriter file = new FileWriter("val/player.json")) {
        file.write(selfJSON.toString(4));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

它创建的JSON文件如下所示:

{
"credits": 2910,
"name": "",
"health": 100,
"upgrades": {
    "Reave Bomb": {
        "damage": 1,
        "speed": 1
    },
    "Twilight Ball": {
        "damage": 1,
        "speed": 1
    },
    "Purple Fire": {
        "damage": 1,
        "speed": 1
    }
},
"aura": 100

}

另外,我使用的库是org。json


共 (1) 个答案

  1. # 1 楼答案

    如果希望保留映射中键的顺序,则不应使用JSON。在JSON中,映射中键的顺序在语义上没有意义