Jackson 常用注解总结

1、@JsonProperty#

用于属性,以指定名称进行序列化(包括请求和响应)

@Data
public class UserInfo {

    @JsonProperty("userName")
    private String name;

    private GenderEnum gender;

    private String password;

    private Date birthday;
}

2、@JsonFormat#

用于 Date 类型属性,在序列化时转换成指定格式。可以在 Spring 配置中添加默认格式,也可以在注解上指定

spring:
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
@Data
public class UserInfo {

    @JsonProperty("userName")
    private String name;

    private GenderEnum gender;

    private String password;

    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;
}

3、@JsonValue#

用于枚举中,可以指定序列化枚举时使用的属性。配合 @JsonCreator 使用

在 Mybatis 中使用枚举可以参考这篇文章 如何在 MyBatis 中优雅的使用枚举

@Getter
@AllArgsConstructor
public enum GenderEnum {

    MALE(1, "男"),
    FEMALE(2, "女"),
    ;

    @JsonValue
    private int value;

    private String desc;

    @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
    public static GenderEnum getByValue(int value) {
        for (GenderEnum genderEnum : values()) {
            if (genderEnum.getValue() == value) {
                return genderEnum;
            }
        }
        return null;
    }
}

4、@JsonIgnore 和 @JsonIgnoreProperties#

前者用于属性上,后者用于类上指定多个属性。用来忽略指定属性

@Data
@JsonIgnoreProperties(value = {"password"})
public class UserInfo {

    @JsonProperty("userName")
    private String name;

    private GenderEnum gender;

    @JsonIgnore
    private String password;

    @JsonFormat(timezone = "GTM+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;
}

作者:revil

出处:https://www.cnblogs.com/revil/p/16243146.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   多久会在  阅读(408)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示