我正在使用Jackson库从JSON读取此对象:
{
a = "1";
b = "2";
c = "3";
}
我正在使用mapper.readValue(new JsonFactory().createJsonParser(json), MyClass.class);
现在我想使用mapper.writeValueAsString(object)
将对象打印到JSON,但我想忽略'c'字段。我怎样才能做到这一点?将@JsonIgnore
添加到字段会阻止在解析时设置字段,不是吗?
答案 0 :(得分:12)
你不能通过使用公共字段来实现这一点,你必须使用方法(getter / setter)。使用Jackson 1.x,您只需要将@JsonIgnore
添加到getter方法和没有注释的setter方法,它就可以了。杰克逊2.x,注释解决方案已经过重新设计,您需要将@JsonIgnore
放在设置器上的getter和@JsonProperty
上。
public static class Foo {
public String a = "1";
public String b = "2";
private String c = "3";
@JsonIgnore
public String getC() { return c; }
@JsonProperty // only necessary with Jackson 2.x
public String setC(String c) { this.c = c; }
}
答案 1 :(得分:0)
您可以在序列化对象时使用@JsonIgnoreProperties({"c"})
。
@JsonIgnoreProperties({"c"})
public static class Foo {
public String a = "1";
public String b = "2";
public String c = "3";
}
//Testing
ObjectMapper mapper = new ObjectMapper();
Foo foo = new Foo();
foo.a = "1";
foo.b = "2";
foo.c = "3";
String out = mapper.writeValueAsString(foo);
Foo f = mapper.readValue(out, Foo.class);