2012-03-09 43 views
4

我得到了5MB的JSON響應,我正在使用1024字節的字節數組下載並保存在StringBuffer中。解析Android中的5MB JSON響應時出現內存不足異常

爲了解析這個響應,我必須創建一個帶參數的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中的大量數據。

請提供任何解決方案。

在此先感謝。

回答

1

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

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

此外,你可能需要保存爲文件,您的服務響應與JsonReader重新打開它。

+0

感謝您的回覆。 我的應用程序構建目標2.3.1(API級別9)。 此外,我嘗試與gson解析器仍然是我得到的相同的OutOfMemory。 InputStream is = helper.postData(url,parameters); InputStreamReader ipReader = new InputStreamReader(is); Gson gson = new Gson(); Gson gson = new Gson(); Gson gson = new Gson(); AttachmentDO attachmentResp = gson.fromJson(ipReader,AttachmentDO.class); com.google.gson.Gson.fromJson(Gson.java:694) - java.lang.OutOfMemoryError – Santhosh 2012-03-12 06:07:56

+0

您需要使用基於流的解析器。我認爲gson有這種能力,但不是你使用它的方式 – njzk2 2012-03-12 09:42:00

0

使用傑克遜

Jackson Github

這應該解決您的問題。 但我不會推薦你使用沒有分頁的巨大數據。