jackson-databind icon indicating copy to clipboard operation
jackson-databind copied to clipboard

@JsonIncludeProperties & @JsonIgnoreProperties is ignored when deserializing Records

Open yihtserns opened this issue 1 year ago • 2 comments

Search before asking

  • [X] I searched in the issues and found nothing similar.

Describe the bug

A JSON field:

  • Not included in @JsonIncludeProperties, or
  • Included in @JsonIgnoreProperties

...will still get deserialized as a Record's component with the same name.

Version Information

Oldest I tried this with is 2.14.2, latest is 2.18.

Reproduction

For @JsonIncludeProperties

record Id2Name(int id, String name) {
}
record RecordWithJsonIncludeProperties(@JsonIncludeProperties("id") Id2Name child) {
}

RecordWithJsonIncludeProperties value = new ObjectMapper().readValue("{\"child\":{\"id\":123,\"name\":\"Bob\"}}", RecordWithJsonIncludeProperties.class);
// failed with:
// org.opentest4j.AssertionFailedError:
// Expected :RecordWithJsonIncludeProperties[child=Id2Name[id=123, name=null]]
// Actual   :RecordWithJsonIncludeProperties[child=Id2Name[id=123, name=Bob]]
assertEquals(new RecordWithJsonIncludeProperties(new Id2Name(123, null)), value);

For @JsonIgnoreProperties

record Id2Name(int id, String name) {
}
record RecordWithJsonIgnoreProperties(@JsonIgnoreProperties("name") Id2Name child) {
}

RecordWithJsonIgnoreProperties value = new ObjectMapper().readValue("{\"child\":{\"id\":123,\"name\":\"Bob\"}}", RecordWithJsonIgnoreProperties.class);
// failed with:
// org.opentest4j.AssertionFailedError:
// Expected :RecordWithJsonIgnoreProperties[child=Id2Name[id=123, name=null]]
// Actual   :RecordWithJsonIgnoreProperties[child=Id2Name[id=123, name=Bob]]
assertEquals(new RecordWithJsonIgnoreProperties(new Id2Name(123, null)), value);

Expected behavior

No response

Additional context

NOTE: I'm not personally affected by this, just something I found when testing for #4626 - I thought they have the same cause, but apparently not.

yihtserns avatar Jul 21 '24 17:07 yihtserns

@yihtserns Assuming these still fail for 2.18.2, would it be possible to create pr for failing test to be added under src/test/java/.../tofix?

cowtowncoder avatar Dec 01 '24 01:12 cowtowncoder

Failing/tofix test added via #4823 to help verification if and when someone works on this issue.

cowtowncoder avatar Dec 01 '24 21:12 cowtowncoder