首页 > 解决方案 > 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 是一个问题吗?

标签: javaandroid

解决方案


推荐阅读