2017-04-20 619 views
0

我想使用Gson序列化我的Java類並將它們存儲在.json文件中。我有一個ArrayList<Foo>,我想存儲在標有Foo的節點下。 GSON輸出是這樣的:Android讀/寫JSON文件到內部存儲

[{'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

LogCat中顯示的是什麼異常?和哪一行代碼? –

回答

1

爲了得到您想要的輸出格式,您可以將您的列表放入Map中,並使用鍵「foo」。

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

那麼你應該得到這個輸出

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

很明顯,你會想這樣做的主要原因是如果你存儲比所謂的「富」列表中的其他事情。

相關問題