我正在尝试使用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?
答案 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'的列表。