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 后才能使用。配设过程比较复杂,需要用时请看书或上网搜索。

 

// 

原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/271447.html

(0)
上一篇 2022年7月4日
下一篇 2022年7月4日

相关推荐

发表回复

登录后才能评论