首先我必须说我自己从未使用过 Libgdx Json API。但我会尽力帮助你。
我认为 github 上的 Tutorial 应该对您有所帮助。
基本上Json API 允许您将整个对象写入Json 对象,然后将其解析为String。为此,请使用:
PlayerScore score = new PlayerScore("Player1", 1537443); // The Highscore of the Player1
Json json = new Json();
String score = json.toJson(score);
这应该是这样的:
{name: Player1, score: 1537443}
您可以使用prettyPrint() 代替toJson(),其中包括换行符和制表符。
要将其写入文件,请使用:
FileHandle file = Gdx.files.local("scores.json");
file.writeString(score, true); // True means append, false means overwrite.
您还可以通过实现 Json.Serializable 或使用 writeValue 手动添加值来自定义您的 Json。
阅读类似:
FileHandle file = Gdx.files.local("scores.json");
String scores = file.readString();
Json json = new Json();
PlayerScore score = json.fromJson(PlayerScore.class, scores);
如果您通过实现Json.Serializable 一直在使用自定义版本,那么您已经实现了read (Json json, JsonValue jsonMap) 方法。如果你正确地实现了它,你的反序列化应该可以工作。如果您一直在手动添加值,则需要创建一个JsonValuejsonFile = new JsonValue(scores)。 scores 是 File 的 String。现在您可以循环遍历此 JsonValue 的子代或按名称获取其子代。
最后一件事:对于高分或类似的事情,也许 Libgdx Preferences 是更好的选择。 Here你可以阅读如何使用它们。
希望我能帮上忙。