我正在使用Spring Data JPA开发一个带有Java后端的Android应用程序。我的一个类表示一个配置文件图像,并包含以下字段:
@Lob @Column(name = "image") private byte[] image;
当我调用保存上述类的Rest API时,JSON请求如下所示:
{"image":"[B@23bafb3"}
然后发生了描述的错误。我看到过将图像声明为字符串然后获取字节的建议,但这对我来说似乎不是一个好的实践。
jogvjijk1#
问题在于将byte[]序列化为JSON。Java中byte[]的默认序列化将导致您所显示的字符串表示形式不是二进制映像的有效格式。要将byte[]正确序列化为base64编码字符串,你可以在你的API中使用一个定制的序列化器/反序列化器。2一个选择是使用Java中的Base64类将byte[]编码为一个字符串,然后将该字符串解码回byte[]在反序列化期间。
1条答案
按热度按时间jogvjijk1#
问题在于将byte[]序列化为JSON。Java中byte[]的默认序列化将导致您所显示的字符串表示形式不是二进制映像的有效格式。要将byte[]正确序列化为base64编码字符串,你可以在你的API中使用一个定制的序列化器/反序列化器。2一个选择是使用Java中的Base64类将byte[]编码为一个字符串,然后将该字符串解码回byte[]在反序列化期间。