gpt4 book ai didi

java - Fasterxml Jackson 数据绑定(bind) MismatchedInputException

转载 作者:行者123 更新时间:2023-12-02 08:42:44 24 4
gpt4 key购买 nike

我在 Spring Boot 应用程序中使用com.fasterxml.jackson.databind。当我向端点发送请求时,我收到以下异常:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of 
org.pacakge.domain.controller.Mycontroller (although at least one Creator exists): cannot
deserialize from Object value (no delegate- or property-based Creator)\n at
[Source: (PushbackInputStream); line: 2, column: 3] Is the body of the request formatted correctly?

我的 Controller 处理具有以下结构的请求正文:

{
"portalId": 123,
"objectType": "TYPE",
"objectTypeId": "0-3",
"objectId": 123,
"properties": { ... }
}

我需要的唯一属性是objectId。我构建了一个类来处理这个对象,如下所示:

@lombok.Value
private static class MyObject {
@JsonAlias("objectId")
private final String dealId;
}

我设计了一个看起来像这样的 Controller

@Slf4j
@RestController
@RequestMapping(path = "/entrypoint")
public class MyController {
@Autowired
public MyController(){}
/**
* REST endpoint handles MyObject
*/
@PostMapping(value = "/endpoint")
public void handleRequest(
@Valid @RequestBody MyObject command
) {
log.debug(command.getDealId());
}
@lombok.Value
private static class MyObject {
@JsonAlias("objectId")
private final String dealId;
}
}

这个问题的有趣之处在于,如果我将 MyObject 更改为以下结构,我的请求就会得到很好的处理:

@lombok.Value
private static class MyObject {
@JsonAlias("objectId")
private final String dealId;
private final JSONObject properties; // TODO we shouldn't need this. Fix.
}

我似乎无法弄清楚问题出在哪里。我希望在这个问题上得到一些帮助。也许我缺少注释?我希望其他人也经历过这个问题。我只是在网上搜索没有找到任何相关信息。

最佳答案

我将以下行添加到项目根目录中的 lombok.config 中:

lombok.anyConstructor.addConstructorProperties=true

之后,设法使用 @JsonIgnoreProperties 注释使用此 DTO 反序列化 JSON:

@Value
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyObject {
@JsonProperty("objectId")
String dealId;
}

关于java - Fasterxml Jackson 数据绑定(bind) MismatchedInputException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61273031/

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