@@ -34,6 +34,61 @@ public static JsonPrimitives Create(int i)
3434 }
3535 }
3636
37+ public class NullableValueTypes
38+ {
39+ public int ? Int { get ; set ; }
40+ public long ? Long { get ; set ; }
41+ public decimal ? Decimal { get ; set ; }
42+ public double ? Double { get ; set ; }
43+ public bool ? Boolean { get ; set ; }
44+ public DateTime ? DateTime { get ; set ; }
45+ }
46+
47+ [ Test ]
48+ public void Can_parse_json_with_nullable_valuetypes ( )
49+ {
50+ var json = "{}" ;
51+
52+ var item = JsonSerializer . DeserializeFromString < NullableValueTypes > ( json ) ;
53+
54+ Assert . That ( item . Int , Is . Null , "int" ) ;
55+ Assert . That ( item . Long , Is . Null , "long" ) ;
56+ Assert . That ( item . Decimal , Is . Null , "decimal" ) ;
57+ Assert . That ( item . Double , Is . Null , "double" ) ;
58+ Assert . That ( item . Boolean , Is . Null , "boolean" ) ;
59+ Assert . That ( item . DateTime , Is . Null , "datetime" ) ;
60+ }
61+
62+ [ Test ]
63+ public void Can_parse_json_with_nullable_valuetypes_that_has_included_null_values ( )
64+ {
65+ var json = "{\" Int\" :null,\" Long\" :null,\" Decimal\" :null,\" Double\" :null,\" Boolean\" :null,\" DateTime\" :null}" ;
66+
67+ var item = JsonSerializer . DeserializeFromString < NullableValueTypes > ( json ) ;
68+
69+ Assert . That ( item . Int , Is . Null , "int" ) ;
70+ Assert . That ( item . Long , Is . Null , "long" ) ;
71+ Assert . That ( item . Decimal , Is . Null , "decimal" ) ;
72+ Assert . That ( item . Double , Is . Null , "double" ) ;
73+ Assert . That ( item . Boolean , Is . Null , "boolean" ) ;
74+ Assert . That ( item . DateTime , Is . Null , "datetime" ) ;
75+ }
76+
77+ [ Test ]
78+ public void Can_parse_json_with_nullable_valuetypes_that_has_no_value_specified ( )
79+ {
80+ var json = "{\" Int\" :,\" Long\" :,\" Decimal\" :,\" Double\" :,\" Boolean\" :,\" DateTime\" :}" ;
81+
82+ var item = JsonSerializer . DeserializeFromString < NullableValueTypes > ( json ) ;
83+
84+ Assert . That ( item . Int , Is . Null , "int" ) ;
85+ Assert . That ( item . Long , Is . Null , "long" ) ;
86+ Assert . That ( item . Decimal , Is . Null , "decimal" ) ;
87+ Assert . That ( item . Double , Is . Null , "double" ) ;
88+ Assert . That ( item . Boolean , Is . Null , "boolean" ) ;
89+ Assert . That ( item . DateTime , Is . Null , "datetime" ) ;
90+ }
91+
3792 [ Test ]
3893 public void Can_handle_json_primitives ( )
3994 {
0 commit comments