【发布时间】: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(它将解析到一个列表)。只要继续做,您将永远拥有完整的信息。