gpt4 book ai didi

java - 在 Spring Boot 中返回 JSON 对象作为响应

转载 作者:IT老高 更新时间:2023-10-28 12:45:41 25 4
gpt4 key购买 nike

我在 Spring Boot 中有一个示例 RestController:

@RestController
@RequestMapping("/api")
class MyRestController
{
@GetMapping(path = "/hello")
public JSONObject sayHello()
{
return new JSONObject("{'aa':'bb'}");
}
}

我正在使用 JSON 库 org.json

当我点击 API /hello 时,我得到一个异常提示:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class org.json.JSONObject] with root cause

java.lang.IllegalArgumentException: No converter found for return value of type: class org.json.JSONObject

有什么问题?有人能解释一下到底发生了什么吗?

最佳答案

当您使用 Spring Boot web 时,Jackson 依赖是隐式的,我们不必显式定义。如果使用 eclipse,您可以在依赖层次选项卡中的 pom.xml 中检查 Jackson 依赖关系。

正如您使用 @RestController 注释的那样,无需进行显式 json 转换。只需返回一个 POJO,jackson 序列化程序将负责转换为 json。当与@Controller 一起使用时,它相当于使用 @ResponseBody。我们不是将 @ResponseBody 放在每个 Controller 方法上,而是将 @RestController 而不是普通的 @Controller@ResponseBody默认应用于该 Controller 中的所有资源。
引用此链接: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-responsebody

您面临的问题是因为返回的对象(JSONObject)没有某些属性的 getter。您的意图不是序列化此 JSONObject,而是序列化 POJO。所以只需返回 POJO。
引用此链接: https://stackoverflow.com/a/35822500/5039001

如果你想返回一个 json 序列化的字符串,那么只需返回这个字符串。在这种情况下,Spring 将使用 StringHttpMessageConverter 而不是 JSON 转换器。

关于java - 在 Spring Boot 中返回 JSON 对象作为响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44839753/

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