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中,而不是将其直接写入文件。而不是jsonify整个数组列表,我可以单独附加每个对象。如果这样做,我将如何将其附加到文件中(而不是jsonobject(?

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

要获取所需的输出格式,您可以将列表放在键" 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''列表以外的其他东西。

最新更新