上篇我们学习了《34-Spring MVC的@JsonView》,本篇我们学习使用Jackson的注解对JSON视图进行定制。
2.5 Json定制
前面我们使用了Jackson的注解@JsonView来定制返回视图,这节我们使用Jackson提供的注解对序列化(将Java对象转换成json,用于返回体的定制)和反序列化(Json转成Java对象,用于请求体的定制)进行更细节的设置。
我们定义一个Java类来作为演示:
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class SecondPerson {
private Long id;
private String name;
private Integer age;
private Float height;
private Date birthday;
}
定义控制器用来验证:
@GetMapping("/json")
public SecondPerson jsonOut(@RequestBody SecondPerson person){
return person;
}
我们在这节将针对一些常用的注解进行讲解。
2.5.1 忽略属性
我们可以@JsonIgnore忽略某个属性,或者用@JsonIgnoreProperties忽略多个属性。属性一旦忽略,无论请求和返回这个属性都不存在了。
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@JsonIgnoreProperties({"name","age"})
public class SecondPerson {
private Long id;
private String name;
private Integer age;
@JsonIgnore
private Float height;
@JsonIgnore
private Date birthday;
}
2.5.2 格式定制
可以使用@JsonFormat定制时间格式等。
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class SecondPerson {
private Long id;
private String name;
private Integer age;
private Float height;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
}
在Spring Boot中可以通过外部配置来全局设置Json数据中的日期格式:
spring.jackson.date-format: yyyy-MM-dd
2.5.3 key定制
可以使用@JsonProperty来定制Json的key。
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class SecondPerson {
@JsonProperty("person-id")
private Long id;
@JsonProperty("person-name")
private String name;
@JsonProperty("person-age")
private Integer age;
private Float height;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
}
本文暂时没有评论,来添加一个吧(●'◡'●)