一、@JsonIgnore
1、作用
在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
2、使用
一般标记在属性或者方法上,返回的json数据即不包含该属性。
3、实例
3.1、jackson的maven依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
3.2、实体类
import com.fasterxml.jackson.annotation.JsonIgnore;
public class HomeResponse {
private String userName;
@JsonIgnore
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
3.3、测试方法
import com.example.demo.model.HomeResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class JSONTest {
public static void main(String[] args) throws IOException {
HomeResponse response = new HomeResponse();
response.setUserName("LL");
response.setPassWord("123");
System.out.println(new ObjectMapper().writeValueAsString(response));
}
}
执行结果:
{"userName":"LL"}
4、@JsonIgnore不生效问题
代码中使用alibaba的fastjson,@JsonIgnore不是fastjson的,所以不生效需将注解改为@JSONField(serialize = false),JSONField来自com.alibaba.fastjson.annotation包的,然后序列化的时候就生效了。
二、@JsonIgnoreProperties
1、作用
防止json转成实体类时因为字段的缺少或过多而报错
2、使用
标记在实体类上
3、实例
@JsonIgnoreProperties(ignoreUnknown = true)
文章仅作为个人学习整理