Skip to content

Commit 810d82f

Browse files
authored
Merge pull request #441 from Nickztar/feat/LatLng
Fix converting for LatLng throwing if altitude is present
2 parents 97f3db9 + b1a743d commit 810d82f

File tree

1 file changed

+31
-20
lines changed

1 file changed

+31
-20
lines changed

GoogleMapsComponents/Serialization/LatLngLiteralConverter.cs

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)