Spring注解之json 数据处理

目录

[1. 过滤 json 数据](#1. 过滤 json 数据)

[2. 格式化 json 数据](#2. 格式化 json 数据)

[3. 扁平化对象](#3. 扁平化对象)


1. 过滤 json 数据

@JsonIgnoreProperties 作用在类上用于过滤掉特定字段不返回或者不解析。

java 复制代码
//生成json时将userRoles属性过滤
@JsonIgnoreProperties({"userRoles"})
public class User {
​
    private String userName;
    private String fullName;
    private String password;
    @JsonIgnore
    private List<UserRole> userRoles = new ArrayList<>();
}

@JsonIgnore一般用于类的属性上,作用和上面的@JsonIgnoreProperties 一样。

java 复制代码
public class User {
​
    private String userName;
    private String fullName;
    private String password;
   //生成json时将userRoles属性过滤
    @JsonIgnore
    private List<UserRole> userRoles = new ArrayList<>();
}
2. 格式化 json 数据

@JsonFormat一般用来格式化 json 数据。:

比如:

java 复制代码
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone="GMT")
private Date date;
3. 扁平化对象
java 复制代码
@Getter
@Setter
@ToString
public class Account {
    @JsonUnwrapped
    private Location location;
    @JsonUnwrapped
    private PersonInfo personInfo;
​
  @Getter
  @Setter
  @ToString
  public static class Location {
     private String provinceName;
     private String countyName;
  }
  @Getter
  @Setter
  @ToString
  public static class PersonInfo {
    private String userName;
    private String fullName;
  }
}

未扁平化之前:

java 复制代码
{
    "location": {
        "provinceName":"河北",
        "countyName":"廊坊"
    },
    "personInfo": {
        "userName": "ww1234",
        "fullName": "shanghai"
    }
}

使用@JsonUnwrapped 扁平对象之后:

java 复制代码
@Getter
@Setter
@ToString
public class Account {
    @JsonUnwrapped
    private Location location;
    @JsonUnwrapped
    private PersonInfo personInfo;
    ......
}
java 复制代码
{
  "provinceName":"河北",
  "countyName":"廊坊",
  "userName": "ww1234",
  "fullName": "shanghai"
}

相关推荐
橘子青衫10 分钟前
多线程编程探索:阻塞队列与生产者-消费者模型的应用
java·后端·架构
Java致死20 分钟前
SpringBoot(一)
java·spring boot·后端
有诺千金25 分钟前
深入解析@Validated注解:Spring 验证机制的核心工具
java·spring
进击的阿晨41 分钟前
🔥想自学 Java 却踩坑无数?从月薪 3K 到 15K 程序员的逆袭笔记来啦!
java·后端·面试
TS古宁1 小时前
CST1017.基于Spring Boot+Vue共享单车管理系统
java·前端·vue.js·spring boot·后端
肖恩想要年薪百万1 小时前
自用:在使用SpringBoot做学生信息管理系统时遇到的问题
java·spring boot·后端·学习·spring·intellij-idea
秋野酱2 小时前
基于SpringBoot汽车零件商城系统设计和实现(源码+文档+部署讲解)
java·spring boot·后端
TS古宁2 小时前
CST1018.基于Spring Boot+Vue滑雪场管理系统
java·vue.js·spring boot·后端·spring
向哆哆2 小时前
Java + Kubernetes:云原生时代的开发与运维
java·云原生·kubernetes
Moshow郑锴2 小时前
IDEA Education Version | DDDD
java·ide·intellij-idea