@@ -18,36 +18,47 @@ public override LatLngLiteral Read(ref Utf8JsonReader reader, Type typeToConvert
1818 throw new JsonException ( "Expected start of object." ) ;
1919 }
2020
21- if ( ! reader . Read ( ) )
22- {
23- throw new JsonException ( "Expected property name." ) ;
24- }
21+ double ? lat = null ;
22+ double ? lng = null ;
2523
26- if ( ! reader . Read ( ) || reader . TokenType != JsonTokenType . Number )
24+ while ( reader . Read ( ) )
2725 {
28- throw new JsonException ( "Expected latitude value" ) ;
29- }
26+ if ( reader . TokenType == JsonTokenType . EndObject )
27+ {
28+ break ;
29+ }
3030
31- var lat = reader . GetDouble ( ) ;
31+ if ( reader . TokenType != JsonTokenType . PropertyName )
32+ {
33+ throw new JsonException ( "Expected property name." ) ;
34+ }
3235
33- if ( ! reader . Read ( ) )
34- {
35- throw new JsonException ( "Expected property name." ) ;
36- }
36+ var propertyName = reader . GetString ( ) ;
37+ if ( ! reader . Read ( ) )
38+ {
39+ throw new JsonException ( "Expected value." ) ;
40+ }
3741
38- if ( ! reader . Read ( ) || reader . TokenType != JsonTokenType . Number )
39- {
40- throw new JsonException ( "Expected longitude value" ) ;
42+ switch ( propertyName )
43+ {
44+ case "lat" :
45+ lat = reader . GetDouble ( ) ;
46+ break ;
47+ case "lng" :
48+ lng = reader . GetDouble ( ) ;
49+ break ;
50+ default :
51+ reader . Skip ( ) ;
52+ break ;
53+ }
4154 }
42- var lng = reader . GetDouble ( ) ;
4355
44- if ( ! reader . Read ( ) || reader . TokenType != JsonTokenType . EndObject )
56+ if ( lat == null || lng == null )
4557 {
46- string ? text = reader . GetString ( ) ;
47- throw new JsonException ( $ "Expected end of object. Found { text } ") ;
58+ throw new JsonException ( "Missing required properties for LatLngLiteral." ) ;
4859 }
4960
50- return new LatLngLiteral ( lat , lng ) ;
61+ return new LatLngLiteral ( lat . Value , lng . Value ) ;
5162 }
5263
5364 // <inheritdoc />
0 commit comments