用法
@JsonIgnoreProperties(ignoreUnknown = true)
如果json 字符串中的字段数量多于类的字段时会报错,加上注解则正常。
实体
//@JsonIgnoreProperties(ignoreUnknown = true)
public class JsonTestModel {
String name;
Date time;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
}
测试
public class JsonTests {
static JsonTestModel testModel;
@BeforeClass
public static void setTestModel(){
JsonTestModel jsonTestModel = new JsonTestModel();
jsonTestModel.setName("@JsonIgnoreProperties测试");
//jsonTestModel.setTime(new Date());
testModel = jsonTestModel;
}
@Test
public void test() throws IOException {
ObjectMapper mapper = new ObjectMapper();
//序列化
String json = mapper.writeValueAsString(testModel);
System.out.println(json);
json = "{\"name\":\"@JsonIgnoreProperties测试\",\"time\":1575431118191,\"timee\":1575431118191}";
//反序列化
JsonTestModel readValue = mapper.readValue(json, JsonTestModel.class);
System.out.println("name:"+readValue.getName());
System.out.println("time:"+readValue.getTime());
}
@AfterClass
public static void tearDown() {
testModel = null;
}
}
@JsonIgnoreProperties({“name”})
等同于@JsonIgnore,序列化反序列化时忽略指定字段
实体
@JsonIgnoreProperties({"name"})
public class JsonTestModel {}
测试
json = "{\"name\":\"@JsonIgnoreProperties测试\",\"time\":1575431118191}";
测试结果
{"time":1575442216140}
name:null
time:Wed Dec 04 11:45:18 CST 2019
@JsonIgnoreProperties(value = “name”,allowSetters = true,allowGetters= true)
同时还可以对字段的序列化(allowGetters)、反序列化 (allowSetters)单独设置是否允许。
value = "name"表示序列化、反序列化都忽略。
allowSetters = true(默认是false),允许反序列化。
allowGetters= true(默认是false),允许序列化。
实体
@JsonIgnoreProperties(value = "name",allowSetters = true)
public class JsonTestModel {}
测试结果
{"time":1575442740810}
name:@JsonIgnoreProperties测试
time:Wed Dec 04 11:45:18 CST 2019
实体
@JsonIgnoreProperties(value = "name",allowGetters= true)
public class JsonTestModel {}
测试结果
{"name":"@JsonIgnoreProperties测试","time":1575442938460}
name:null
time:Wed Dec 04 11:45:18 CST 2019