使用libGDX写入Json

时间:2014-04-02 05:50:08

标签: java android json libgdx

我是Json和libGDX的新手,但我创建了一个简单的游戏,我想将玩家名称及其分数存储在Json文件中。有没有办法做到这一点?我想在Gdx.files.localStorage中创建一个Json文件,如果它不存在,如果不存在,则向其添加新数据。

我检查了以下代码:

1> Using Json.Serializable to parse Json files

2 - Parsing Json in libGDX

但我找不到如何实际创建一个Json文件并将多个唯一对象值(每个玩家的名称和分数)写入其中。我错过了他们的代码吗?

这个link提到了如何加载现有的json而不是其他内容。

1 个答案:

答案 0 :(得分:5)

首先,我必须说我自己从未使用过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}

您可以使用toJson()而不是prettyPrint(),其中包括换行符和标签。

将此内容写入文件使用:

FileHandle file = Gdx.files.local("scores.json");
file.writeString(score, true);         // True means append, false means overwrite.

您还可以通过实施Json或手动添加值Json.Serializable来自定义writeValue

阅读类似:

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)方法。如果您正确实现了它,那么反序列化应该可行。如果您一直手动添加值,则需要创建JsonValue jsonFile = new JsonValue(scores)scoresString的{​​{1}}。现在,您可以循环查看此File的子项,或者按名称获取其子项。

最后一件事:对于高分或类似事情,Libgdx Preferences可能是更好的选择。 Here您可以阅读如何使用它们。

希望我能提供帮助。