@@ -41,6 +41,20 @@ public BaseImpl(int v, int x) {
41
41
public void setExtra (int v ) { _extra = v ; }
42
42
43
43
}
44
+
45
+ static class StringBean {
46
+ public String value ;
47
+
48
+ public StringBean (String v ) { value = v ; }
49
+ }
50
+
51
+ static class StringBeanBean {
52
+ public StringBean bean ;
53
+
54
+ public StringBeanBean (StringBean b ) {
55
+ bean = b ;
56
+ }
57
+ }
44
58
45
59
public void testBinary () throws Exception
46
60
{
@@ -95,4 +109,23 @@ public void testMethodsFromSuperclass() throws Exception
95
109
assertEquals (5 , result .getExtra ());
96
110
assertEquals (-245 , result .getValue ());
97
111
}
112
+
113
+ public void testBeanNulls () throws Exception
114
+ {
115
+ final JSON withNulls = JSON .std .with (JSON .Feature .WRITE_NULL_PROPERTIES );
116
+
117
+ // by default, no nulls for either "String" property
118
+ assertEquals ("{}" , JSON .std .asString (new StringBean (null )));
119
+ assertEquals ("{}" , JSON .std .asString (new StringBeanBean (null )));
120
+ assertEquals (a2q ("{'bean':{}}" ),
121
+ JSON .std .asString (new StringBeanBean (new StringBean (null ))));
122
+
123
+ // but we can make them appear
124
+ assertEquals (a2q ("{'value':null}" ),
125
+ withNulls .asString (new StringBean (null )));
126
+ assertEquals (a2q ("{'bean':null}" ),
127
+ withNulls .asString (new StringBeanBean (null )));
128
+ assertEquals (a2q ("{'bean':{'value':null}}" ),
129
+ withNulls .asString (new StringBeanBean (new StringBean (null ))));
130
+ }
98
131
}
0 commit comments