以前我的代码对象列表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;;) –