Как записать одно значение в файл JSON с помощью LibGDX - PullRequest
0 голосов
/ 26 мая 2019

Например, если у меня есть этот файл 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 голосов
/ 27 мая 2019

Вы должны перезаписать весь файл, так что лучше использовать отдельный файл для вашего плеера.

Как это 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);
}
...