@@ -22,6 +22,15 @@ public String name() {
22
22
}
23
23
}
24
24
25
+ record RecordWithIgnoreComponentOverriddenAccessor (int id , @ JsonIgnore String name ) {
26
+
27
+ // @JsonIgnore on overridden method is not automatically inherited by overriding method
28
+ @ Override
29
+ public String name () {
30
+ return name ;
31
+ }
32
+ }
33
+
25
34
record RecordWithIgnorePrimitiveType (@ JsonIgnore int id , String name ) {
26
35
}
27
36
@@ -71,8 +80,33 @@ public void testSerializeJsonIgnoreAccessorRecord() throws Exception {
71
80
}
72
81
73
82
public void testDeserializeJsonIgnoreAccessorRecord () throws Exception {
74
- RecordWithIgnoreAccessor value = MAPPER .readValue ("{\" id\" :123,\" name\" :\" Bob\" }" , RecordWithIgnoreAccessor .class );
75
- assertEquals (new RecordWithIgnoreAccessor (123 , null ), value );
83
+ RecordWithIgnoreAccessor expected = new RecordWithIgnoreAccessor (123 , null );
84
+
85
+ assertEquals (expected , MAPPER .readValue ("{\" id\" :123}" , RecordWithIgnoreAccessor .class ));
86
+ assertEquals (expected , MAPPER .readValue ("{\" id\" :123,\" name\" :null}" , RecordWithIgnoreAccessor .class ));
87
+ assertEquals (expected , MAPPER .readValue ("{\" id\" :123,\" name\" :\" Bob\" }" , RecordWithIgnoreAccessor .class ));
88
+ }
89
+
90
+
91
+ /*
92
+ /**********************************************************************
93
+ /* Test methods, JsonIgnore component, but accessor method was overridden without re-annotating with JsonIgnore
94
+ /**********************************************************************
95
+ */
96
+
97
+ public void testSerializeJsonIgnoreComponentOverrideAccessorRecord () throws Exception {
98
+ String json = MAPPER .writeValueAsString (new RecordWithIgnoreComponentOverriddenAccessor (123 , "Bob" ));
99
+ assertEquals ("{\" id\" :123}" , json );
100
+ }
101
+
102
+ public void testDeserializeJsonIgnoreComponentOverrideAccessorRecord () throws Exception {
103
+ RecordWithIgnoreComponentOverriddenAccessor expected = new RecordWithIgnoreComponentOverriddenAccessor (123 , null );
104
+
105
+ assertEquals (expected , MAPPER .readValue ("{\" id\" :123}" , RecordWithIgnoreComponentOverriddenAccessor .class ));
106
+ assertEquals (expected , MAPPER .readValue ("{\" id\" :123,\" name\" :null}" , RecordWithIgnoreComponentOverriddenAccessor .class ));
107
+
108
+ // BUG: Deserialization should've ignored 'name' - caused by jackson-databind/pull/3737
109
+ // assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":\"Bob\"}", RecordWithIgnoreComponentOverriddenAccessor.class));
76
110
}
77
111
78
112
/*
0 commit comments