##jackson忽略解析字段

@JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。

@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:

@JsonIgnoreProperties({ “internalId”, “secretKey” })

指定的字段不会被序列化和反序列化。

1
2
3
4
5
6
7
8
9
10
11
@JsonIgnoreProperties({"mmsi","todate","pageIndex","pageSize","sortkey"})//忽略字段
public class PageBase {
private int mmsi;
private int todate;
private int pageIndex;
private int pageSize;
private int sortkey;

@JsonIgnore
private String loginpass;
}

@JsonInclude(Include.NON_NULL) 是springmvc中的标注,是为了控制返回的json字符串显示哪些字段。这里的设置是为null的字段不显示

@JsonFormat
此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)
@JsonSerialize
此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。

1
2
3
4
5
6
7
8
9
10
11
12
public class CustomDoubleSerialize extends JsonSerializer<Double> {  

private DecimalFormat df = new DecimalFormat("##.00");

@Override
public void serialize(Double value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {

jgen.writeString(df.format(value));
}
}

@JsonDeserialize
此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class CustomDateDeserialize extends JsonDeserializer<Date> {  

private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

@Override
public Date deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {

Date date = null;
try {
date = sdf.parse(jp.getText());
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}