【发布时间】:2013-07-18 11:08:05
【问题描述】:
我必须在 android 中解析以下 json 响应,其中BookContent 是转换为 base64 并以字符串形式返回的 book 的内容。对于某些书籍,我得到了非常大的字符串作为响应。如果我将整个响应转换为 JSONObject,(JSONObject obj = new JSONObject(response)) 它会崩溃,抛出 out of memory 异常。我得到的json结构很简单,但是BookContent属性的字符串长度很大。
{"BookResult":{"BookContent":"3lWeX0Y1YaKdrOFr\/zD6W13fO67d\/zBow8f\/ERgtdbrn\/F6V1L79krYMeFHpp7D3FwOuYzDE5nI5iU0yh6UawZqmoam3sRATwI3DY9hIObHvoiB8Q0S+ver0KsO\/EoesVYErQs+SAEfF9JGXJV21+q16McesFbjpR2mPr3FMtMpGe2v+AIWK5hHu10iJ............","BookId":98,"Name":"Android principles"}}
【问题讨论】:
-
找到一种更好的方式来分发图书,而不是在 JSON 中间使用一些大的编码字符串。
-
单独流式传输内容,并写入磁盘。 JSON 可以具有指向内容流的链接。
-
响应不仅包含pdf,还包含jpeg、png等格式。根据我们的项目要求,所有这些数据都应该只作为 blob 发送,因为我们有一个 iOS 版本可以满足相同的要求,并且运行良好。
-
@SD : 感谢您的回复。我可以将整个 json 响应写入文件。但是在解析它时,我应该将它转换为 JSONObject 作为 JSONObject obj = new JSONObject(response);obj.getString("BookContent") 以获取内存不足异常的实际内容
-
@njzk2: 大约 6 Mb
标签: android out-of-memory