gpt4 book ai didi

java - 无法将数组传递给 Spring Boot Java

转载 作者:行者123 更新时间:2023-12-03 21:42:01 24 4
gpt4 key购买 nike

我正在尝试向 Sprin boot 发送一个 POST 请求,其中包含主体中的自定义对象列表。我在请求正文中的 JSON 是这样的:

[{"name":"name1","icon":"icon1"},
{"name":"name2","icon":"icon2"},
{"name":"name3","icon":"icon3"}]

我得到了这个错误

Cannot construct instance of `io.wedaily.topics.models.Topic` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

我的 Controller :

@PostMapping
public void createTopics(@RequestBody List<Topic> topics) {
System.out.println(topics);
}

我的主题模型:

public class Topic {

private Long id;
private String name;
private String icon;
private Date createdAt;
// Constructor
// Getters
// Setters
}

最佳答案

异常非常明确,可以准确告诉您发生了什么。 Jackson 需要一个默认的、无参数的构造函数,该构造函数为您要反序列化的每个字段定义了 getter 和 setter,或者,您需要一个带有 Jackson 注释的构造函数,告诉它如何将 json 映射到您的构造函数中。

只需修改您的主题类以包含如下所示的默认构造函数。 (如果你使用 lombok,用 @Data 注释你的类也可以做到这一点)

public class Topic {
private Long id;
private String name;
private String icon;
private Date createdAt;

public Topic(){
}

// Other all args constructor
// Getters
// Setters
}

关于java - 无法将数组传递给 Spring Boot Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61924201/

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