在Android中解析5MB JSON响应时出现内存不足异常

时间:2012-03-09 10:40:36

标签: android json parsing out-of-memory

我得到了5MB的JSON响应,我正在下载并使用1024大小的字节数组保存在StringBuffer中。

要解析此响应,我必须使用参数作为String创建一个JSONObject。在将响应转换为String时,我得到out of memory exception(stringBufferVar.toString()).

从服务中我将获得以下响应,最多5个附件,每个最大5MB数据采用Base64编码。

以下是服务的回复。

{"result":[{"attachment":{"name":"one.doc", "type":"document", "data":"base64 encoded data max of 5MB"}, {"attachment":{"name":"two.txt", "type":"text", "data":"base64 encoded data max of 5MB"} }] }

我会在列表中显示附件,当用户点击某个项目时我必须在SDCard中保存该附件。为此,我如何在JSON中解析和保存大量数据。

请提供任何解决方案。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您需要使用基于Stream的解析器。在API 11+中有http://developer.android.com/reference/android/util/JsonReader.html

下面是gson http://code.google.com/p/google-gson/

此外,您可能需要将服务响应保存为文件,然后再使用JsonReader重新打开它。

答案 1 :(得分:0)

使用杰克逊

Jackson Github

那应该可以解决你的问题。 但我不会建议您在没有分页的情况下使用大量数据。