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

San*_*osh 5 parsing android json out-of-memory

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

要解析此响应,我必须创建一个 JSONObject,参数为字符串。在将响应转换为字符串时,我得到一个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"} }] }
Run Code Online (Sandbox Code Playgroud)

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

请提供任何解决方案。

提前致谢。

njz*_*zk2 2

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

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

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