0

私はしばらくの間、データベース blob から byte[] を取得し、それを json に解析してクライアントに送信しようとしていました。最初にデータベースから BLOB を取得し、次に次のようにしてバイト配列を取得します。

MyObject temp = new MyObject()
Blob icon = dbResult.getBlob(1);
temp.setIcon(icon.getBytes(1, (int)icon.length()));

後で、MyObject を解析して json 文字列に変換し、それをクライアントに送り返します。しかし、byte[] を解析するときに json 文字列がかなり壊れているようです。

それがどのように見えるかの例:

[{"icon":"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAFQAPwDASIAAhEBAxEB/8QAHAAAAQUBAQEAAAAAAAAAAAAAAgEDBAUGAAcI

これを、ジャージーWebサービスであるWebサービスでjsonに解析しました。クライアント側でjsonからクラスオブジェクトに解析しようとすると、IllegalStateException(Gson)がスローされます。

誰がこれが何であるか、私が間違っていることを知っていますか?

4

1 に答える 1

3

json を使用してバイナリ データを転送しようとする場合は、base64で明示的にエンコードしてから、受信側でデコードすることをお勧めします。JSON はバイナリをラップするように設計されていないため、これを作成しようとすると問題が発生することが予想されました。

于 2012-07-21T21:32:19.267 に答える