编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

35-Spring MVC定制JSON视图

wxchong 2024-06-27 01:38:11 开源技术 31 ℃ 0 评论

上篇我们学习了《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;
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表