jackson-databind
jackson-databind copied to clipboard
@JsonIncludeProperties & @JsonIgnoreProperties is ignored when deserializing Records
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 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?
Failing/tofix test added via #4823 to help verification if and when someone works on this issue.