代码之家  ›  专栏  ›  技术社区  ›  MusicDev

是否将JSON文件密钥与org.json保持一致?[副本]

  •  1
  • MusicDev  · 技术社区  · 8 年前

    这个问题已经有了答案:

    我一直在摆弄一个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 回复  |  直到 8 年前
        1
  •  1
  •   Robin Green    8 年前

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