第二章:SpringBoot接口Http协议开发实战
02-5 常用json框架介绍和Jackson返回结果处理
简介:介绍常用json框架和注解的使用,自定义返回json结构和格式
1、常用框架 阿里 fastjson,谷歌gson等
JavaBean序列化为Json,性能:Jackson > FastJson > Gson > Json-lib 同个结构
Jackson、FastJson、Gson类库各有优点,各有自己的专长
空间换时间,时间换空间
2、jackson处理相关自动
指定字段不返回:@JsonIgnore
指定日期格式:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
空字段不返回:@JsonInclude(Include.NON_NUll)
指定别名:@JsonProperty
在一章创建的spring boot项目的基础上,测试jackson的注解字段。
1.搭建好框架
在IDEA中创建初始化一个spring boot的应用。具体结构如下图所示:

新建一个User类,用于Java Bean对象的序列化操作。
package com.example.spring_demo03.domain;
import java.util.Date;
/**
* @author : codingchao
* @date : 2021-11-17 10:32
* @Description:
**/
public class User {
private int id;
private String pwd;
private String phone;
private Date createTime;
public User(int id, String pwd, String phone, Date createTime) {
this.id = id;
this.pwd = pwd;
this.phone = phone;
this.createTime = createTime;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
创建好本次的测试controller。
package com.example.spring_demo03.controller;
import com.example.spring_demo03.domain.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* @author : codingchao
* @date : 2021-11-17 10:36
* @Description:
**/
@RestController
public class JsonController {
@GetMapping(value = "/testjson")
public Object testjson(){
int id = 007;
String pwd = "json";
String phone = "7752100";
Date createTime = new Date();
return new User(id,pwd,phone,createTime);
}
}
测试结果

2.@JsonIgnore注解的使用
- **作用:**在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
- **使用方法:**一般标记在属性或者方法上,返回的json数据即不包含该属性。
- **场景模拟:**返回用户信息的时候,密码一般都不需要返回。因此需要指定该字段不做json返回。

测试结果:

3.@JsonFormat注解的使用
通常日期格式都是以时间戳的形式存放在数据库里,当前端页面通过接口查询时,我们会将一个对象的某些属性查出来返回给页面。@JsonFormat 来实现格式的自动转换:

测试结果

4.@JsonProperty注解的使用
@JsonProperty:此注解作用于属性上,作用是把该属性的名称序列化成另一个自己想要的名称
对属性名进行重命名,在java里我们墨守规定驼峰命名,但是在一些特殊的场合下,比如数据库是下划线等,再此我们就可以进行映射
对属性名称重命名,比如在很多场景下Java对象的属性是按照规范的驼峰书写,但在数据库设计时使用的是下划线连接方式,此处在进行映射的时候

测试结果:

5.@JsonInclude注解的使用
@JsonIgnore注解用于属性或者方法上,用来完全忽略被注释的字段和方法对应的属性,即便这个还有其它注解,一般标记在属性或者方法上,返回的json数据不包含被该注解引用的属性或者方法

测试结果


还有后续工作,大家点赞评论收藏关注走起来!!!学起来!!!
本文介绍了SpringBoot中常用的JSON框架,如Jackson、FastJson及Gson,并通过实例演示了如何利用注解定制JSON序列化结果,包括@JsonIgnore、@JsonFormat、@JsonProperty和@JsonInclude等。
2020

被折叠的 条评论
为什么被折叠?



