【问题标题】:Write to Json using libGDX使用 libGDX 写入 Json
【发布时间】:2014-05-13 05:05:25
【问题描述】:

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

我已经检查了以下给出的代码:

1>Using Json.Serializable to parse Json files

2>Parsing Json in libGDX

但我找不到如何实际创建 Json 文件并向其写入多个唯一对象值(每个玩家的姓名和得分)。我是否遗漏了他们的代码中的某些内容?

link 提到了如何加载现有的 json,但仅此而已。

【问题讨论】:

    标签: java android json libgdx


    【解决方案1】:

    首先我必须说我自己从未使用过 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)scoresFileString。现在您可以循环遍历此 JsonValue 的子代或按名称获取其子代。

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

    希望我能帮上忙。

    【讨论】:

    • 谢谢...我会试试这个代码。关于首选项,我目前正在使用首选项,它工作得很好。但后来我想添加制作在线记分牌的功能,我想将 Json 文件用于服务器。
    • 啊,没关系。请记住,Preferences 是使 webapps 数据持久化的唯一方法。因此,对于像客户端依赖设置(声音等)这样的数据,它们是最佳选择。但我认为在服务器上发送和存储数据Json 是一个不错的选择。
    猜你喜欢
    • 2016-12-13
    • 2016-12-15
    • 2019-10-12
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2021-12-03
    相关资源
    最近更新 更多