【问题标题】:Get byte[] from MySQL in Json format从 MySQL 中获取 Json 格式的 byte[]
【发布时间】:2012-07-20 17:05:42
【问题描述】:

我一直在尝试从我的数据库 blob 中获取一个 byte[],然后将其解析为 json 并将其发送给我的客户。我首先从数据库中获取 blob,然后通过执行以下操作获取字节数组:

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

稍后我将 MyObject 解析为我发送回客户端的 json 字符串。但似乎 json 字符串在解析 byte[] 时变得非常损坏。

外观示例:

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

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

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

【问题讨论】:

    标签: mysql json blob gson


    【解决方案1】:

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

    【讨论】:

    • 好的!您知道如何在 jersey 网络服务中执行此操作,例如代码示例吗?
    • 您的意思是将其编码为字符串并在客户端解码该字符串吗?
    • 没错。 Java 能够将数据编码/解码到/从 base64 字符串。
    • 好的,我现在一直在这样做,但仍然存在问题。编码的字符串仍然很大——对于 json 来说太大了,所以它被剪掉了。图片只有 16kb..
    • 客户端与服务器端编码的字符串不一样,它看起来一样,直到它突然结束。 json 包有大小限制吗?
    猜你喜欢
    • 2017-10-07
    • 2023-03-13
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多