Spring MVC之Jackson的注解使用

  SpringMVC默认自带 Jackson 支持 Json序列化,了解jackson的注解使用可以很方便自定义json字符串。

Jackson注解使用

日期格式化

  1. @JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)
    作用在属性上,序列化时出参时,将Long型的时间值转化为指定格式的字符串类型的日期时间格式。

忽略/包含属性

  1. @JsonIgnore
    作用在属性上,该属性不参与序列化。
  2. @JsonIgnoreProperties(value = {“username”,”password”})
    作用在类上,不参与序列化的字段,序列化和反序列化都受影响。
  3. @JsonInclude(JsonInclude.Include.NON_NULL)
    作用在类上,序列化时不包含NULL值的属性,还有其它一些值:ALWAYS,ALWAYS,NON_DEFAULT,NON_EMPTY
  4. @JsonIgnoreType
    作用在类上,当该类作为其它类的属性时,该属性将被忽略。

定义别名

  1. @JsonProperty(“loginname”)
    作用在属性上,序列化输出时,使用别名, 如下:输出json串时,用的是loginname别名。
    1
    2
    @JsonProperty("loginname")
    private String loginName;
  2. @JsonSetter(“loginname”)
    作用在setter方法上,定义别名,类似与@JsonProperty,解决反序列化时json键名与实体类属性名不匹配问题。

排序

  1. @JsonPropertyOrder(value = {“birthday”,”password”})
    作用于类上,指定参与序列化的属性在json串中的顺序。

自定义序列化

  1. @JsonSerialize(using = Date2LongSerializer.class)
    作用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个 double 时在其后面限制两位小数点。
  2. **@JsonDeserialize **
    作用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的。
    自定义转换器:根据需要将数据格式化后的String类型数据返回给前台
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import java.io.IOException; 
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import org.codehaus.jackson.JsonGenerator;
    import org.codehaus.jackson.JsonProcessingException;
    import org.codehaus.jackson.map.JsonSerializer;
    import org.codehaus.jackson.map.SerializerProvider;

    public class CustomDateSerializer extends JsonSerializer<Date>
    {

    @Override
    public void serialize(Date value, JsonGenerator jgen,
    SerializerProvider provider)
    throws IOException, JsonProcessingException
    {
    jgen.writeString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(value));
    }
    }
    实体类字段添加注解,将jackson在转换json的时候调用自定义的转换器
    1
    2
    @JsonSerialize(using = CustomDateSerializer.class) 
    private Date birthday;
作者

光星

发布于

2018-02-12

更新于

2022-06-17

许可协议

评论