以前我的代碼對象列表JSON字符串只是這樣的:獲取使用GSON
objJson = gson.toJson(objList);
return objJson;
而且我得到了JSON字符串與返回值。
但是後來我開始着名內存不足錯誤當JSON變得太大。
然後我也跟着下面的帖子,其將在OOM錯誤的有效方式對象爲JSON字符串列表中會有更多:
https://sites.google.com/site/gson/streaming
所以,我在這裏遵循上述辦法:
public String writeJsonStream(List<MyObj> objList) throws IOException {
ByteArrayOutputStream baos=new ByteArrayOutputStream();
OutputStreamWriter outputStreamWriter=new OutputStreamWriter(baos,"UTF-8");
JsonWriter writer = new JsonWriter(outputStreamWriter);
writer.setIndent(" ");
writer.beginArray();
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().setPrettyPrinting().create();
for (MyObj myobj : objList) {
gson.toJson(myobj, MyObj.class, writer);
}
String objJson = writer.toString();
writer.endArray();
writer.close();
return objJson;
}
但是這個返回對象[email protected]
。
方法gson.toJson(myobj, MyObj.class, writer);
是void類型,不返回JSON字符串。那麼如何在這種情況下獲取JSON字符串?
感謝它的工作。另外,一個側面說明+1;;) –