Json - 将Java对象附加到现有的Json文件

时间:2016-04-27 08:23:56

标签: java json libgdx

我在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"
}

现在我想以相同的方式向同一个json文件添加(追加)另一个级别(例如,级别2)的点位置。我猜它将是一个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"
}

1 个答案:

答案 0 :(得分:0)

正如dambros所说。最通用(最好)的解决方案是使用DotPosition列表,与对象一起使用它,在工作结束时将此列表保存到文件中。 但是,如果您只需要将任何内容附加到文件中,那么#34; true&#34;方法writeString()中的参数。有关更多信息,请查看:https://github.com/libgdx/libgdx/wiki/File-handling#writing-to-a-file