gpt4 book ai didi

java - 使用 Jackson 将文件类型从 Angular 反序列化为 Java

转载 作者:行者123 更新时间:2023-12-05 07:40:19 24 4
gpt4 key购买 nike

在我使用 SpringBoot 和 Angular 开发的 REST 应用程序中,我需要向 SpringBoot 后端发送一个 REST 请求,以便将对象保存到数据库中。

在前端,用户填写表单并提交。以下是创建对象的接口(interface),以便作为 REST 调用发送到后端。

export interface TenderToPost{

id: number;
name: string;
description: string;
images: File[];
referenceNumber: string;

}

后端应将上述对象反序列化为 Java 中的以下类的对象。

public class TenderDTO implements Serializable{

private long id;

private String name;

private String description;

private List<MultipartFile> images;

private String referenceNumber;

// default constructor

// geters and setters

}

如上所示,我需要接受从前端发送的文件作为 MultipartFile

但是,当从前端发送请求时, jackson 给我错误

Can not construct instance of org.springframework.web.multipart.MultipartFile: abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information

我知道这个错误是因为我使用了 MultipartFile 接口(interface)作为我的图像列表的类型。

我想到的解决方案是让 Jackson 知道应该使用注释将列表反序列化为什么类型。所以,我使用了以下内容

@JsonDeserialize(contentAs = CommonsMultipartFile.class)
private List<MultipartFile> images;

CommonsMultipartFile 是 MultipartFile 的一个实现。这就是我使用它的原因。

现在我得到以下错误。

Can not construct instance of org.springframework.web.multipart.commons.CommonsMultipartFile: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)

我需要更改图像列表的 setter 吗?还是我的整个方法不正确?

请告诉我如何纠正这个问题。

最佳答案

尝试使用@JsonPropertyDescription构造对象。 @JsonPropertyDescription example

关于java - 使用 Jackson 将文件类型从 Angular 反序列化为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46272827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com