gpt4 book ai didi

json - Spring Boot json 在没有默认构造函数的情况下建模

转载 作者:行者123 更新时间:2023-12-05 04:14:52 26 4
gpt4 key购买 nike

我会遇到一个问题,但我无法解决。

上下文

我有一个 Controller :

@RestController
@RequestMapping("/classroom")
public class ClassroomController {

@Inject
private ClassroomManager classroomManager;

@RequestMapping(value= "", method = RequestMethod.POST)
public Classroom create(Classroom classroom) {
... some checks ...
return classroomManager.create(classroom);
}
}

模型类:

public class Classroom {

private Long id;
private final String name;
private final RoomCapacity roomCapacity;
private final Set<RoomEquipment> equipments = new HashSet<>();
[... No setter, No default constructor ...]



public Classroom(String name, RoomCapacity roomCapacity) {
[... some checks ...]
this.name = name;
this.roomCapacity = roomCapacity;
}
}

问题是,我无法以 JSON 格式发送带有 Classroom 的 POST 请求。

当我这样做时,我会遇到这个异常:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.ubp.ent.backend.core.model.classroom.Classroom]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.ubp.ent.backend.core.model.classroom.Classroom.<init>()

我的问题是什么

我确实理解错误,我可能会向类添加一个默认构造函数。
但是点 Classroom 来自模型,我不想允许默认实例化。

如何让 Spring 能够从 Json 构建?

最佳答案

您可以通过为您的模型类定义 Jackson 自定义反序列化器来实现。查看下面的链接,了解如何实现和配置它。

http://wiki.fasterxml.com/JacksonHowToCustomDeserializers

http://www.baeldung.com/jackson-deserialization

关于json - Spring Boot json 在没有默认构造函数的情况下建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958131/

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