主要用来查询出数据库中的字段反序列化时映射到实体类时,或者返回给前端的json数据时,实体类加了这个注解,如果对应属性为null,则json将不转化对应属性到json串中去。
如果实体类中不存在查询出的对应字段映射时,虽然自己写的这个应用不需要这个字段,但是会报异常。为了解决中中场景,在实体类上标注@JsonIgnoreProperties (ingoreUnknow = true)可以解决,也可以对应忽略某些指定的字段。
@JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:
@JsonIgnoreProperties({ "internalId", "secretKey" })
指定的字段不会被序列化和反序列化。
如下是另一种解决方式:
有时候,如果数据库表中增加一个字段,但返回的JSON字符串中含有我们并不需要的字段,那么当对应的实体类中不含有该字段时,会抛出一个异常,告诉你有些字段没有在实体类中找到。解决办法很简单,在声明ObjectMapper之后,加上上述代码:
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);