我正在尝试使用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''列表以外的其他东西。