jackson-databind: Ignore property during deserialization but retain in serialization not working
Using com.fasterxml.jackson.core:jackson-{core,annotations,databind} 2.1.0
, I think the code below to ignore a computed property (i.e., no field) during deserialization (property zip
), but include it in serialization used to work, but now it doesn’t. I also tried removing class level @JsonIgnoreProperties({"zip"})
and adding @JsonIgnore
along with @JsonProperty("zip")
but that didn’t work either.
The variant with a field still works: https://gist.github.com/2510887 .
@JsonIgnoreProperties({"zip"})
public static class Foo {
private final int bar;
public Foo(@JsonProperty("bar") final int bar) {
this.bar = bar;
}
public int getBar() {
return bar;
}
@JsonProperty("zip")
public int getZip() {
return bar * 2;
}
static <T> T fromJson(final String json, final Class<T> clazz) {
try {
return new ObjectMapper().readValue(json, clazz);
} catch (final IOException ioe) {
throw Throwables.propagate(ioe);
}
}
static String asJson(final Object obj) {
try {
return new ObjectMapper().writeValueAsString(obj);
} catch (final IOException ioe) {
throw Throwables.propagate(ioe);
}
}
}
@Test
public void testIgnoreDuringDeserializationButNotSerialization() {
final Foo foo = new Foo(1);
final String json = Foo.asJson(foo);
// json does not include zip computed property
LG.info("foo: {}", json);
final Foo reconstituted = Foo.fromJson(json, Foo.class);
}
About this issue
- Original URL
- State: closed
- Created 12 years ago
- Comments: 26 (9 by maintainers)
I have tried
@JsonIgnoreProperties(value = "fieldName", allowGetters=true)
. This worked for me. But if I try@JsonProperty(access = JsonProperty.Access.READ_ONLY)
on getter method, didn’t work.