在Spring Boot中返回JSON对象作为响应
我在Spring Boot" title="Spring Boot">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
[dispatcherServlet]的Servlet.service()抛出异常[请求处理失败;嵌套异常为java.lang.IllegalArgumentException:未找到类型为org.json.JSONObject]的返回值的转换器,其根本原因是
java.lang.IllegalArgumentException:未找到类型为org.json.JSONObject的返回值的转换器
有什么问题 有人可以解释到底发生了什么吗?
回答:
当您使用Spring Boot Web时,Jackson依赖关系是隐式的,我们不必显式定义。pom.xml
如果使用eclipse
,则可以在依赖项层次结构选项卡中检查Jackson依赖项。
并且正如您所注释的那样,@RestController
无需进行显式的json转换。只需返回一个POJO,杰克逊序列化器将负责转换为json。@ResponseBody
与@Controller
一起使用时,等效于使用。而不是放置@ResponseBody
在每个控制器方法上,我们放置的@RestController
不是香草@Controller
,而是@ResponseBody
默认情况下应用于该控制器中的所有资源。
您面临的问题是因为返回的对象(JSONObject)没有某些属性的吸气剂。您的意图不是序列化此JSONObject而是序列化POJO。因此,只需返回POJO。
如果要返回json序列化的字符串,则只需返回该字符串。在这种情况下,Spring将使用StringHttpMessageConverter而不是JSON转换器。
以上是 在Spring Boot中返回JSON对象作为响应 的全部内容, 来源链接: utcz.com/qa/422729.html