如何使用LibGDX在JSON文件中写入一个值

时间:2019-05-25 21:57:38

标签: json libgdx

例如,如果我有此JSON文件:

{
  "player": {
    "gold":100,
    "diamonds":100,
    "username":"placeholder"
  }
}

玩家的黄金数量被修改,我只想覆盖黄金价值,我该如何编码?

到目前为止,这是我所能拥有的,但是它会覆盖整个JSON文件,而我只想覆盖一个值。

   public void save(Player player, String path) {
        Json json = new Json();
        String txt = json.toJson(player);
        FileHandle file = Gdx.files.local(path);
        file.writeString(json.prettyPrint(txt), true);
    }

1 个答案:

答案 0 :(得分:0)

您必须覆盖整个文件,因此最好为播放器使用一个单独的文件。

赞这个player.json

{
    "gold":100,
    "diamonds":100,
    "username":"placeholder"
}

还有Player.java

public class Player {

    public int gold;
    public int diamonds;
    public String username;
}

使用以下代码将修改并将数据保存到json文件中。

Json json = new Json();
FileHandle file = Gdx.files.local("player.json");
Player player = file.exists()? json.fromJson(Player.class,file) : new Player();
player.gold=300;       // modify player data

save(player,file);

然后调用保存方法,如下所示:

private void save(Player player, FileHandle file) {
    Json json = new Json();
    json.setTypeName(null);
    json.setUsePrototypes(false);
    json.setIgnoreUnknownFields(true);
    json.setOutputType(JsonWriter.OutputType.json);

    String txt = json.toJson(player);
    file.writeString(json.prettyPrint(txt), false);
}