【问题标题】:Keeping JSON file keys in order with org.json? [duplicate]使用 org.json 保持 JSON 文件键的顺序? [复制]
【发布时间】:2018-11-02 22:51:07
【问题描述】:

我一直在搞乱一个 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。

【问题讨论】:

  • 不幸的是,看起来规范不要求保留订单。您可能必须使用另一个库来强制执行这种类型的要求。

标签: java json


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2015-10-31
    • 2011-05-29
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多