【问题标题】:Json - Append Java object to existing Json fileJson - 将 Java 对象附加到现有的 Json 文件
【发布时间】:2016-08-21 10:08:03
【问题描述】:

我在 LibGDX 中,我必须保存某些点的位置。我有这样的课:

public class DotPositions {
    private ArrayList<Vector2> position;
    private int numberofDots;
    private String levelName;
}

然后我将这个类的一个对象转换为 json 并将其保存在一个文件 position.json 中,使用:

private ArrayList<Vector2> dotPosition = new ArrayList<>(); //this value is assigned elsewhere
private DotPositions positions;
positions.setNumberofDots(dotPosition.size());
positions.setLevelName("level_one");

Json json = new Json(JsonWriter.OutputType.json);
FileHandle file = Gdx.files.local("position.json");
file.writeString(json.prettyPrint(positions), false);

结果,我得到了这样的 json:

{
"position": [
    {
        "x": 200,
        "y": 300
    },
    {
        "x": 250,
        "y": 500
    }
],
"numberofDots": 2,
"levelName": "level_one"
}

现在我想以相同的方式将另一个级别(例如,级别 2)的点位置添加(附加)到同一个 json 文件中。我猜这将是一个 json 数组,但我知道的不够深入,无法发表声明。有人知道如何将另一个 DotPosition 对象转换为 json 并将其附加到之前保存的 json 文件中吗?


编辑:我对 json 了解不够,所以格式可能有误,但预期的输出是这样的:

{
"position": [
    {
        "x": 200,
        "y": 300
    },
    {
        "x": 250,
        "y": 500
    }
],
"numberofDots": 2,
"levelName": "level_one"
},
{
"position": [
    {
        "x": 100,
        "y": 100
    },
    {
        "x": 600,
        "y": 350
    }
],
"numberofDots": 2,
"levelName": "level_two"
}

【问题讨论】:

  • 请显示预期输出的示例。
  • @dambros 我已经编辑了问题描述以包含一个示例。请检查一下。
  • 最简单的方法是构建一个 DotPositions 列表并将此列表转换为 JSON。输出将是一个 JSON 数组,具有您想要的不同级别。
  • @dambros 非常感谢。现在想来,似乎很简单。
  • 您可以在退出前将当前的 JSON 保存到某个文件/数据库中。当您开始下一个级别时,您只需加载/解析前一个 json,生成新级别并将其添加到前一个加载的 json(它将解析到一个列表)。只要继续做,您将永远拥有完整的信息。

标签: java json libgdx


【解决方案1】:

正如丹布罗斯所说。最通用(最佳)的解决方案是拥有 DotPosition 列表,将其与对象一起使用,并在工作结束时将此列表保存到文件中。 但是,如果您只需要将任何内容附加到文件中,请在方法 writeString() 中使用“true”参数。欲了解更多信息,请查看:https://github.com/libgdx/libgdx/wiki/File-handling#writing-to-a-file

【讨论】:

  • 是的,我想我会选择@dambros 解决方案。我并不完全需要FileHandle 中的附加选项。这将是一条更加艰难的道路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 2021-07-23
  • 2020-04-12
  • 1970-01-01
  • 2016-01-09
  • 2021-11-12
相关资源
最近更新 更多