0

私は次のコードを持っています:

String response = webService.webGet("");  the response of the web service

String LargeImage = new Gson().fromJson(response,String.class);

byte[] imageByteArray = Base64.decode(LargeImage);

応答は次のようになります:"iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCA..."約400.000文字のBase64エンコード画像。

応答はWebサービスから非常に迅速に行われます。しばらくして(20〜30秒など)Gsonで解析しようとすると、メモリ不足でエラーが発生します。Gsonなしでこの単純な文字列を解析するにはどうすればよいですか。かなり単純なはずですが、その方法がわかりません。教えてください。お時間をいただきありがとうございます

4

2 に答える 2

2

Base64イメージエンコーディングを、イメージを直接ダウンロードできるURLに変更します。

次に、flexjson 2.1を入手すると、AndroidでJSONを数行で非常に簡単に解析できます。また、GSONよりも高速です。

http://flexjson.sourceforge.net

しかし、あなたの投稿からは、Base64画像をJSON経由で単一の文字列として送信しているように見えます。その場合、JSONを使用する必要はありません。将来、メタデータをラップする予定がない限り。

また、画像をDBに保存することもスキップしてください。それをファイルシステムに書き込み、オブジェクトにリンクされたDBにファイルパスを配置するだけです。ダウンロードした画像などがわからない場合は、デバッグがはるかに簡単になります。

于 2010-09-28T23:07:32.277 に答える
1

応答は次のようになります:"iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCA..."約400.000文字のBase64エンコード画像。

あなたはをからかっていなければなりません。

教えてください。

賢明なWebサービスを見つけて、それに切り替えます。あなたの会社の誰かがWebサービスを書いた場合は、それらを解雇します。Webサービスを作成した場合は、自分で解雇してください。JSONでラップされたBase64エンコーディングで画像(特に大量の画像)を返す必要はないと思います。

それまでの間、Gsonではなく組み込みのAndroidJSONパーサーを試すことができます。

于 2010-09-28T19:42:30.530 に答える