ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

4.1. 返回json数据

2022-07-04 05:33:36  阅读:210  来源: 互联网

标签:返回 4.1 Book JSON databind json book jackson Gson


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,Book,JSON,databind,json,book,jackson,Gson
来源: https://www.cnblogs.com/ShengLiu/p/16441548.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有