Spring MVC之Jackson的注解使用
SpringMVC默认自带 Jackson
支持 Json
序列化,了解jackson的注解使用可以很方便自定义json
字符串。
Jackson注解使用
日期格式化
- @JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)
作用在属性上,序列化时出参时,将Long
型的时间值转化为指定格式的字符串类型的日期时间格式。
忽略/包含属性
- @JsonIgnore
作用在属性上,该属性不参与序列化。 - @JsonIgnoreProperties(value = {“username”,”password”})
作用在类上,不参与序列化的字段,序列化和反序列化都受影响。 - @JsonInclude(JsonInclude.Include.NON_NULL)
作用在类上,序列化时不包含NULL值的属性,还有其它一些值:ALWAYS,ALWAYS,NON_DEFAULT,NON_EMPTY
- @JsonIgnoreType
作用在类上,当该类作为其它类的属性时,该属性将被忽略。
定义别名
- @JsonProperty(“loginname”)
作用在属性上,序列化输出时,使用别名, 如下:输出json串时,用的是loginname别名。1
2
private String loginName; - @JsonSetter(“loginname”)
作用在setter
方法上,定义别名,类似与@JsonProperty
,解决反序列化时json
键名与实体类属性名不匹配问题。
排序
- @JsonPropertyOrder(value = {“birthday”,”password”})
作用于类上,指定参与序列化的属性在json串中的顺序。
自定义序列化
- @JsonSerialize(using = Date2LongSerializer.class)
作用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个 double 时在其后面限制两位小数点。 - **@JsonDeserialize **
作用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的。
自定义转换器:根据需要将数据格式化后的String
类型数据返回给前台实体类字段添加注解,将jackson在转换json的时候调用自定义的转换器1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20import 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>
{
public void serialize(Date value, JsonGenerator jgen,
SerializerProvider provider)
throws IOException, JsonProcessingException
{
jgen.writeString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(value));
}
}1
2
private Date birthday;
Spring MVC之Jackson的注解使用
http://blog.gxitsky.com/2018/02/12/SpringMVC-14-jackson-annotation/