2012-03-09 19 views
4

JSONレスポンスが5MBになりました。1024バイトサイズのバイト配列を使用してStringBufferにダウンロードして保存しています。Androidで5MB JSONレスポンスを解析中に例外が発生しました

このレスポンスを解析するには、パラメータとしてStringを指定してJSONObjectを作成する必要があります。応答を文字列に変換する際に、out of memory exception(stringBufferVar.toString()).

サービスから、Base64でエンコードされた最大5MBのデータを最大5つの添付ファイルとして、以下の応答が得られます。

サービスからの応答は次のとおりです。

{"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

があり、あなたはおそらくJsonReaderでそれを再オープンする前に、ファイルとしてあなたのサービス応答を保存する必要があり、また

http://code.google.com/p/google-gson/がgsonています。あなたの問題を解決する必要があり

+0

ご返信ありがとうございます。 アプリケーションビルドターゲット2.3.1(APIレベル9)。 また、私はgsonパーサーと同じOutOfMemoryを試してみました。 InputStream is = helper.postData(url、parameters); InputStreamReader ipReader =新しいInputStreamReader(あり); \t \t \t Gson gson = new Gson(); AttachmentDO attachmentResp = gson.fromJson(ipReader、AttachmentDO.class); com.google.gson.Gson.fromJson(Gson.java:694) - java.lang.OutOfMemoryError – Santhosh

+0

ストリームベースのパーサーを使用する必要があります。私はgsonがこの機能を持っていると思うが、あなたがそれを使う方法ではない – njzk2

0

使用ジャクソン

Jackson Github

。 しかし、私はあなたにページ分割せずに巨大なデータを使用するように勧めません。

関連する問題