Android将JSON文件读/写到内部存储

时间:2017-04-20 19:44:44

标签: java android json

我正在尝试使用Gson序列化我的Java类并将它们存储在.json文件中。我有一个ArrayList<Foo>我想要存储在标有Foo的节点下。 Gson输出的内容如下:

[{'id':1},{'id':2},{'id':3}]

我希望Json文件看起来像这样:

{
    'Foo': [{'id':1},{'id':2},{'id':3}],
    'bar': ...
}

我尝试过使用JsonWriter类,但我认为这是针对外部存储的,因为我收到ReadOnly错误。这就是我试图写它的方式:

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(gson.toJson(foos).getBytes()); // foos is ArrayList<Foo>
fos.close();

我想我需要将它存储在JsonObject中,而不是直接将其写入文件。而不是Jsonifying整个ArrayList我可以单独追加每个对象。如果我这样做,我将如何将其附加到文件中(而不是JsonObject)?

我面临的主要问题实际上是从文件中读取。我如何将整个Json文件读入JsonObject?

1 个答案:

答案 0 :(得分:1)

要获得所需的输出格式,您可以将列表放在带有“foo”键的地图中。

    Map<String, List<Foo>> map = new HashMap<>();
    map.put("Foo", foos);
    String output = gson.toJson(map);

然后你应该得到这个输出

{
    'Foo': [{'id':1},{'id':2},{'id':3}]
}

显然,你想做这样的事情的主要原因是你存储的东西不是名为'Foo'的列表。