【Spring Boot 2.0学习之旅-02-5】常用json框架介绍和Jackson返回结果处理

本文介绍了SpringBoot中常用的JSON框架,如Jackson、FastJson及Gson,并通过实例演示了如何利用注解定制JSON序列化结果,包括@JsonIgnore、@JsonFormat、@JsonProperty和@JsonInclude等。

第二章: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注解的使用

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

在这里插入图片描述

测试结果:

在这里插入图片描述

3.@JsonFormat注解的使用

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

在这里插入图片描述

测试结果

在这里插入图片描述

4.@JsonProperty注解的使用

@JsonProperty:此注解作用于属性上,作用是把该属性的名称序列化成另一个自己想要的名称

对属性名进行重命名,在java里我们墨守规定驼峰命名,但是在一些特殊的场合下,比如数据库是下划线等,再此我们就可以进行映射

对属性名称重命名,比如在很多场景下Java对象的属性是按照规范的驼峰书写,但在数据库设计时使用的是下划线连接方式,此处在进行映射的时候

在这里插入图片描述

测试结果:

在这里插入图片描述

5.@JsonInclude注解的使用

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

在这里插入图片描述

测试结果

在这里插入图片描述

在这里插入图片描述

还有后续工作,大家点赞评论收藏关注走起来!!!学起来!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值