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 服务中将其解析为 json,这是一个 jersery web 服务。当我尝试将其从 json 解析为客户端的类对象时,它会抛出 IllegalStateException(Gson)。

任何人都知道这是关于什么以及我做错了什么?

4

1 回答 1

3

如果您尝试使用 json 传输二进制数据,最好使用base64对其进行显式编码,然后在接收方进行解码。JSON 不是为包装二进制文件而设计的,因此尝试执行此操作时的问题是可以预料的。

于 2012-07-21T21:32:19.267 回答