如何在没有jackson注释的情况下忽略反序列化的某些字段?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在没有jackson注释的情况下忽略反序列化的某些字段?相关的知识,希望对你有一定的参考价值。
我在Spring框架项目中有一个类。该课程不得用杰克逊注释。但是,它使用@Component注释,即org.springframework.stereotype.Component。
类
@Component
public class SampleClass{
String prop1;
String prop2;
String prop3;
//Getters & Setters.
}
JSON
"SampleClassJson" : {
String prop1;
String prop2;
}
如您所见,SampleClassJson没有prop3。我想通过使用jackson创建一个没有prop3字段的SampleClass对象。我不想为一个缺少的字段创建另一个类。我该如何实现这一目标?我无法使用谷歌或查看对象映射器设置找到任何答案。
你有两个选择。
在getter或field上使用@JsonIgnore
Sample
类与@JsonIgnore
注释:
class Sample {
private String prop1;
private String prop2;
@JsonIgnore // could be here
private String prop3;
@JsonIgnore // could be here
public String getProp3() {
return prop3;
}
}
ObjectMapper
使用来自Sample
类的注释:
new ObjectMapper().writeValueAsString(new Sample("one", "two", "three"))
第二个变种,是使用自定义序列化器:
自定义序列化器:
class SampleSerializer extends JsonSerializer<Sample> {
@Override
public void serialize(Sample sample, JsonGenerator jgen, SerializerProvider provider) throws IOException {
jgen.writeStartObject();
jgen.writeStringField("prop1", sample.getProp1());
jgen.writeStringField("prop2", sample.getProp2());
jgen.writeEndObject();
}
}
添加注释以使用自定义序列化程序:
@JsonSerialize(using = SampleSerializer.class)
class Sample {
private String prop1;
private String prop2;
private String prop3;
}
ObjectMapper
使用来自Sample
类的注释:
new ObjectMapper().writeValueAsString(new Sample("one", "two", "three"))
如果您根本不使用Jackson注释,可以将自定义序列化程序添加到ObjectMapper
:
Sample
类不包含任何Jackson注释:
class Sample {
private String prop1;
private String prop2;
private String prop3;
}
ObjectMapper
应该知道如何序列化Sample
类:
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Sample.class, new SampleSerializer());
mapper.registerModule(module);
mapper.writeValueAsString(new Sample("one", "two", "three"));
以上是关于如何在没有jackson注释的情况下忽略反序列化的某些字段?的主要内容,如果未能解决你的问题,请参考以下文章
Jackson 将 YAML 文件反序列化为 Map(没有自定义反序列化器)
杰克逊:忽略空@XmlWrapperElement 集合中的空格
如何忽略像“car”这样的空 json 对象:,这会在使用 jackson 反序列化后导致空 pojos
如何使用 Jackson json 注释枚举字段以进行反序列化