java - 使用 libGDX 写入 Json

标签 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,但没有提到其他内容。

最佳答案

首先我不得不说我从未使用过 Libgdx Json API我。但我会尽力帮助你。 我觉得这个Tutorial在 github 上应该能帮到你一些。
基本上,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) 方法。如果你正确地实现了它,你的反序列化应该可以工作。如果您一直在手动添加值,则需要创建一个 JsonValue jsonFile = new JsonValue(scores)scoresFileString。现在您可以循环遍历此 JsonValue 的子项或按名称获取其子项。

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

希望我能帮上忙。

关于java - 使用 libGDX 写入 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802572/

相关文章:

Android:如何在里面制作一个带有LinearLayout的自定义按钮?

javascript - Node.js - 使用 JSON 对象作为变量

javascript - 解析模板字符串

java - 如何启用 Hibernate 自动 ddl 表创建?

java - @+id/允许使用哪些特殊字符?

java - Linux 服务器上的 Tomcat7 未连接到 MySQL 数据库

java - 无法将 JSON 解析为 recyclerview

java - DataTables:在渲染期间重新排列数组实体

android - 无法使用导航和 Jetpack 组合弹出起始目的地

android - 如何在sqlite中使用外键?