4.1. 返回json数据

2022/7/4 6:20:09

本文主要是介绍4.1. 返回json数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Spring MVC 中使用消息转换器HttpMessageConverter 对JSON 的转换提供了很好的支持。

在Spring Boot 中只要有Web 依赖,这个依赖中默认加入了jackson-databind 作为JSON 处理器,此时不需要添加额外的JSON 处理器就能返回一段JSON 了。

<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>

创建一个Book 实体类:

public class Book {
  private String name ;
  private String author;
  @Jsonignore -> 无视这个property,不转换成json返回
  private Float price;
  @JsonFormat(pattern=”yyyy-MM-dd”) -> 时间的打印格式
  private Date publicationDate;
  //省略 getter/setter
}

然后创建BookController , 返回Book 对象即可:

@RestController
public class BookController {
  @GetMapping ("/book")
  public Book book() {
    Book book= new Book();
    book.setAuthor("罗贯中");
    book.setName("三国演义");
    book.setPrice(30f);
    book.setPublicationDate(new Date());
    return book;
  }
}
前端接受到的就是json格式的内容了:
{"name": "三国演义", "author": "罗贯中", "publicationDate:"2018-07-08"}

对于字段忽略、日期格式化等常见需求都可以通过注解来解决。这是通过Spring 中默认提供的MappingJackson2HttpMessageConverter 来实现的,当然开发者也可以根据实际需求自定义JSON 转换器。

 

4.1.2. 自定义转换器

常见的JSON 处理器除了jackson-databind 之外, 还有Gson 和fastjson。

1 使用Gson

 

使用Gson ,需要先除去默认的jackson-databind,然后加入Gson 依赖

<dependency>
  <groupid>org.springfrarnework.boot</groupId>
  <artifactid>spring-boot-starter-web</artifactid>
  <exclusions>
    // 除去默认的jackson-databind
    <exclusion>
      <groupid>com.fasterxrnl.jackson.core</groupid>
      <artifactid>jackson-databind</artifactid>
    </exclusion>
  </exclusions>
</dependency>

// 加入Gson 依赖
<dependency>
    <groupid>com.google.code.gson</groupId>
    <artifactid>gson</artifactid>
</dependency>

由于Spring Boot中默认提供了Gson 的自动转换类GsonHttpMessageConvertersConfiguration, 因此Gson 的依赖添加成功后, 可以像使用jackson-databind 那样直接使用Gson 。

但是在Gson 进行转换时, 如果想对日期数据进行格式化,那么还需要开发者自定义HttpMessageConverter

@Configuration
public class GsonConfig {
  @Bean
  GsonHttpMessageConverter gsonHttpMessageConverter() {
    GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
    GsonBuilder builder = new GsonBuilder();
    // 设直Gson 解析时日期的格式
    builder.setDateFormat(”yyyy-MM-dd”);
    // 设直Gson 解析时修饰符为protected 的字段被过滤掉。就和jsonignored同效果
    // protected Float price; 那么在json中就不会显示price了
    builder.excludeFieldsWithModifiers(Modifier.PROTECTED);
    Gson gson = builder.create();
    converter.setGson(gson);
    return converter;
  }
}

 

2. 使用fastjson

fastjson 是阿里巴巴的一个开源JSON 解析框架, 是目前JSON 解析速度最快的开源框架,该框架也可以集成到Spring Boot 中。不同于Gson, fastjson 继承完成之后并不能立马使用, 需要开发者提供相应的HttpMessageConverter 后才能使用。配设过程比较复杂,需要用时请看书或上网搜索。

 

// 


这篇关于4.1. 返回json数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程