【发布时间】: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。
【问题讨论】:
-
不幸的是,看起来规范不要求保留订单。您可能必须使用另一个库来强制执行这种类型的要求。