【问题标题】:Why Spring Boot project/REST web-service not response into JSON format?为什么 Spring Boot 项目/REST Web 服务不响应 JSON 格式?
【发布时间】:2016-11-20 10:46:02
【问题描述】:

我在 Spring-Boot 技术的帮助下开发了 1-REST Web 服务。

现在,当我要请求任何东西时,它没有以 JSON 格式响应我?取而代之的是它以简单的“字符串”格式响应。

另外,请注意我在 Controller 类级别使用了注解 @RestController。

我在想一些我缺少的配置。是这样吗?

我当前的 Maven 配置是,

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.6.RELEASE</version>
</parent>

另外,我注意到,当我请求(POST)获取列表时,在这种情况下它会返回一个 JSON 对象数组。

谁能指导我怎么了?

【问题讨论】:

  • 您能提供您的控制器代码吗?

标签: spring spring-mvc spring-boot jackson spring-boot-maven-plugin


【解决方案1】:

如果我理解正确,你想生成一个 JSON 对象作为响应?

您可以在@RequestMapping 中选择produces 特定格式的回复。

@RequestMapping(value = "/list", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)

您还可以使用特定格式的响应来添加要返回的对象,以及使用ResponseEntity&lt;?&gt; 的响应类型

类似的东西:

public ResponseEntity<?> getAll() {
    List<Category> categories = categoryDAO.getAll();
    if (!categories.isEmpty()) {
        return new ResponseEntity<>(categories, HttpStatus.OK);
    } else {
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
}

编辑

我为@PostMapping添加注释,它类似于@RequestMapping

@PostMapping(value = "/list", produces = "application/json; charset=UTF-8")

或者也有效:

@PostMapping(value = "/list", produces = MediaType.APPLICATION_JSON_VALUE)

我会给你一个链接,这样你就可以看到 @PostMapping 有哪些属性

@PostMapping

【讨论】:

  • 另外,如果 spring 版本 4.3+,您可以将注释简化为 @PostMapping 或其他
猜你喜欢
  • 2015-11-09
  • 1970-01-01
  • 2019-04-15
  • 2021-08-31
  • 2016-09-19
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 2013-10-24
相关资源
最近更新 更多