你所需具备的基础

如何返回 数据?

那么如何返回 格式数据呢?其实很简单!

加入 工具依赖

<dependency>
    <groupId>com.faster .jackson.dataformat</groupId>
    <artifactId>jackson-dataformat- </artifactId>
</dependency>

不用带版本号,因为在 spring-webmvc 包中已经定义好了,只是没有把依赖传递过来而已,如下面源码所示。

<dependency>
  <groupId>com.faster .jackson.dataformat</groupId>
  <artifactId>jackson-dataformat- </artifactId>
  <version>2.9.5</version>
  <scope>compile</scope>
  <exclusions>
    <exclusion>
      <artifactId>jcl-over-slf4j</artifactId>
      <groupId>org.slf4j</groupId>
    </exclusion>
  </exclusions>
  <optional>true</optional>
</dependency>

可以看到 <optional>true</optional>,所以,只要手动显示加下这个依赖就行了,关于这个标签可以点击这里查看这篇文章。

返回 数据格式定义

1)定义返回方式

在 Controller 类上面用 @RestController 定义或者在方法上面用 @ResponseBody 定义,表明是在 Body 区域输出数据。

2)定义返回类型

此时 Content-Type 默认为 application/xhtml+ ;charset=UTF-8 格式,可以手动改变下类型:application/ ;charset=UTF-8

@RequestMapping(value = \"/test\" produces = MediaType.APPLICATION_ _VALUE)

表明是用 application/  格式输出数据。

3)定义输出格式

控制层方法直接返回对象,对象会自动转换为 格式,不过是默认的标签,可以通过以下标签进行自定义 格式。

@Jackson RootElement(localName = \"response\")
public class User VO {

    @Jackson Property(localName = \"user_name\")
    private String name;

    @Jackson ElementWrapper(useWrapping = false)
    @Jackson Property(localName = \"order_info\")
    private List<OrderInfoVO> orderList;

    // get set 略

}

上面演示了几个常用的注解。

@Jackson RootElement: 用在类上,用来自定义根节点名称;

@Jackson Property: 用在属性上,用来自定义子节点名称;

@Jackson ElementWrapper: 用在属性上,可以用来嵌套包装一层父节点,或者禁用此属性参与 转换。

更多注解可以查看这个包:

\"\"

如何手动完成对象 的互转?

jackson-dataformat-  这个包里面有一个 com.faster .jackson.dataformat. . Mapper 类,该类继承父类 com.faster .jackson.databind. Mapper,可以利用它来完成互转操作。

下面是几个参考方法:

com.faster .jackson.dataformat. . Mapper#readValue
com.faster .jackson.dataformat. . Mapper#writeValue
com.faster .jackson.databind. Mapper#writeValueAsString

更多相关的使用及原理可以查看这个包。

好了,Spring Boot 返回 格式数据就是这么简单,有什么不懂的可以点击阅读原文加入星球和大家一起学习讨论。

收藏 打印