@@ -74,4 +74,48 @@ public void Should_deserialize_message_with_primitive_types()
7474 Assert . Equal ( msg . Int32Property , deserialized . Int32Property ) ;
7575 Assert . Equal ( msg . Int64Property , deserialized . Int64Property ) ;
7676 }
77+
78+ [ Fact ]
79+ public void Should_deserialize_message_with_primitive_types_when_values_were_explicitly_set_to_nulls ( )
80+ {
81+ // Arrange
82+ var serialized =
83+ """
84+ {
85+ "doubleProperty" : null,
86+ "floatProperty" : null,
87+ "int32Property" : null,
88+ "int64Property" : null,
89+ "uint32Property" : null,
90+ "uint64Property" : null,
91+ "sint32Property" : null,
92+ "sint64Property" : null,
93+ "fixed32Property" : null,
94+ "fixed64Property" : null,
95+ "sfixed32Property" : null,
96+ "sfixed64Property" : null,
97+ "boolProperty" : null
98+ }
99+ """ ;
100+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
101+
102+ // Act
103+ var deserialized = JsonSerializer . Deserialize < SimpleMessage > ( serialized , jsonSerializerOptions ) ;
104+
105+ // Assert
106+ Assert . NotNull ( deserialized ) ;
107+ Assert . Equal ( 0d , deserialized . DoubleProperty ) ;
108+ Assert . Equal ( 0f , deserialized . FloatProperty ) ;
109+ Assert . Equal ( 0 , deserialized . Int32Property ) ;
110+ Assert . Equal ( 0L , deserialized . Int64Property ) ;
111+ Assert . Equal ( 0u , deserialized . Uint32Property ) ;
112+ Assert . Equal ( 0ul , deserialized . Uint64Property ) ;
113+ Assert . Equal ( 0 , deserialized . Sint32Property ) ;
114+ Assert . Equal ( 0L , deserialized . Sint64Property ) ;
115+ Assert . Equal ( 0u , deserialized . Fixed32Property ) ;
116+ Assert . Equal ( 0ul , deserialized . Fixed64Property ) ;
117+ Assert . Equal ( 0 , deserialized . Sfixed32Property ) ;
118+ Assert . Equal ( 0L , deserialized . Sfixed64Property ) ;
119+ Assert . False ( deserialized . BoolProperty ) ;
120+ }
77121}
0 commit comments