gpt4 book ai didi

java - 将传入的 JSON 映射到 Spring Boot 中的类

转载 作者:行者123 更新时间:2023-12-02 13:39:39 33 4
gpt4 key购买 nike

我很难理解为什么当我调用 Spring Boot 端点时会出现以下错误

{
"timestamp": 1489573322678,
"status": 406,
"error": "Not Acceptable",
"exception": "org.springframework.web.HttpMediaTypeNotAcceptableException",
"message": "Could not find acceptable representation",
"path": "/quotes"
}

这是我发送到服务器的请求

POST /quotes HTTP/1.1
Host: localhost:8080
tamid: 5
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 94370a3f-6165-106f-f27f-44a44093e0d5

{
"test": "works"
}

我希望传入的 JSON 请求正文映射到我定义的 java 类。这是类(class)。

@Embedded
public class QuoteVersion {

private String test;

public String getTest() {
return test;
}

public void setTest(String test) {
this.test = test;
}

public void validate() {
}
}

我正在使用 @Embedded 注释与 mongodb 映射库一起使用,我希望它与我面临的问题无关

这是 Controller 方法

@RequestMapping(
path = "/quotes",
method = RequestMethod.POST,
headers = "Accept=application/json",
produces = "application/json"
)
public @ResponseBody QuoteStatus create (@RequestHeader(value = "tamid") String tamId,
@RequestBody QuoteVersion firstQuoteVersion) {
// final QuoteVersion firstQuoteVersion = this.quoteFactory.createQuoteVersion(incomingQuote);
final User currentUser = User.getFromTamId(tamId);
currentUser.can(Permissions.CREATE_QUOTE);
firstQuoteVersion.validate();
final Quote newQuote = new Quote();
newQuote.addVersion(firstQuoteVersion);
this.dataRepository.save(newQuote);
QuoteStatus qs = new QuoteStatus(newQuote);
return qs;
}

我猜测 Spring Boot 由于某种原因不理解如何将传入的有效负载映射到我定义的类,但我不知道如何解决该问题。预先感谢您提供的任何帮助。

最佳答案

Spring明确指出了这个问题:

HttpMediaTypeNotAcceptableException

这意味着您在 content-type header 中提供了错误的信息或犯了语法错误。尝试将类似 application/json 的内容放在那里。

还有

确保另一端会接受它。您当前仅接受带有值为 application/jsonaccept header 的请求。我认为这不是您想要的。

因此,要么删除该要求,要么将此 header 添加到请求中。

关于java - 将传入的 JSON 映射到 Spring Boot 中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42807019/

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