当前位置: 首页 > 面试题库 >

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

夏宏旷
2023-03-14
问题内容

我在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默认情况下应用于该控制器中的所有资源。
请参阅此链接: https :
//docs.spring.io/spring/docs/current/spring-framework-
reference/html/mvc.html#mvc-ann-
responsebody

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

如果要返回json序列化的字符串,则只需返回该字符串。在这种情况下,Spring将使用StringHttpMessageConverter而不是JSON转换器。



 类似资料:
  • 我在Spring Boot中有一个RestController示例: 我正在使用JSON库 当我点击API时,我得到一个异常: 路径为[]的上下文中servlet[dispatcherServlet]的servlet.service()引发异常[请求处理失败;嵌套异常为java.lang.IllegalArgumentException:没有找到具有根本原因的返回值:class org.json.

  • 我希望在spring boot中返回类似以下内容的json响应: 我的RestController如下所示 但我得到的反应是这样的

  • 我使用的是Spring版本4(Spring data),我想将Object作为JSON返回,我想知道以下代码即使不使用xmlRootElement注释用户类也能工作: 任何机构都可以解释吗?当我需要注释要返回为JSON的对象类时,响应体/响应实体是否自己完成工作?

  • 问题内容: 我有下表: 我想查询按分组的对象数组。结果中应单独显示。结果应如下所示: 使用还是都没有关系。 但是,我能做的最好的事情是: 哪个返回: 在对象中添加一个额外的键,我想摆脱它。我应该使用哪个SQL(Postgres)查询? 问题答案: [](https://www.postgresql.org/docs/current/functions- json.html#FUNCTIONS-JS

  • 我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?

  • 我正在使用dropwizard和jersey2 rest客户端,我得到 然而,当我打开日志记录时,我看到 我怎样才能反序列化这个响应,而不是只得到400? 我的代码看起来像 亚洲账户基本上是空的 我添加了apiVerson,时间戳和错误到亚洲帐户,但它仍然不工作。任何帮助都很感激。