java - Java [Android] [Spring] - 反序列化一个字节数组
问题描述
所以基本上我正在开发一个 android 应用程序,并且我有一个后端服务器。我向服务器发送一个字节数组,并将其存储在数据库中。我正在使用 Spring,所以存储字节数组的实体是这样的:
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApplicationUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
private String name;
private String lastName;
private int age;
@Lob
private byte[] imageBytes;
}
当服务器接收到字节数组时,它会接收并存储如下内容:[-1, -40, -1, .....]
现在当把它发回时,我把它放在一个 UserDto 对象中,如下所示:
public class UserDto {
String username;
String password;
String name;
String lastName;
int age;
String location;
Long id;
byte [] imageBytes;
}
UserDto userDto = new UserDto();
userDto.setImageBytes(applicationUser.getImageBytes());
return userDto;
在我的 android 应用程序上,我希望它调用返回 ImageBytesResponse,如下所示:
public class ImageBytesResponse {
byte[] imageBytes;
public byte[] getImageBytes() {
return imageBytes;
}
public void setImageBytes(byte[] imageBytes) {
this.imageBytes = imageBytes;
}
}
调用方法: Call<ImageBytesResponse> getImageBytes
但是在进行调用时,当它返回到 android 应用程序时,我得到一个
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 110 path $.imageBytes
所以基本上,为什么从 UserDto --> ImageByteResponse 不起作用?为什么它不能正确脱硫?我的实体属性是@Lob 是一个问题吗?
解决方案
推荐阅读
- php - 找不到类'Maatwebsite\\Excel\\ExcelServiceProvider' - Laravel 4.2
- puppeteer - 如何 page.click 动态列表中具有给定值的元素
- javascript - 实时服务器和本地主机上的 Date().toLocaleString() 输出格式不同
- javascript - rxjs 传递 forkjoin 一个函数,该函数返回一个可观察的数组
- python-asyncio - 如何将数据传递给合作的 aysncio 协程?
- python - 离散 Kolmogorov-Smirnov 测试:与纯 R 相比,使用 rpy2 时得到错误值
- javascript - 为什么我在运行我的函数后得到 NaN?
- android - 如何创建一个颤振插件,在触发后台服务事件时从关闭状态打开应用程序
- scala - 如何在scala列表中找到多个最大参数
- r - dplyr 加权平均值产生长度误差......如何总结加权平均值?