From e501cc8b1c58543f4f12ca65539816afa743f66e Mon Sep 17 00:00:00 2001 From: Matthew Dickinson Date: Mon, 25 Mar 2024 05:41:10 +0000 Subject: [PATCH] Deserialize MultiPolygon Array of Empty Coordinates Array --- .../Converters/StjParsedCoordinates.cs | 9 +++++++++ .../Converters/GeometryConverterTest.cs | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/NetTopologySuite.IO.GeoJSON4STJ/Converters/StjParsedCoordinates.cs b/src/NetTopologySuite.IO.GeoJSON4STJ/Converters/StjParsedCoordinates.cs index 1f34351..4dbf652 100644 --- a/src/NetTopologySuite.IO.GeoJSON4STJ/Converters/StjParsedCoordinates.cs +++ b/src/NetTopologySuite.IO.GeoJSON4STJ/Converters/StjParsedCoordinates.cs @@ -51,6 +51,15 @@ public static StjParsedCoordinates Parse(ref Utf8JsonReader reader, GeometryFact reader.AssertToken(JsonTokenType.StartArray); reader.ReadOrThrow(); + if (reader.TokenType == JsonTokenType.EndArray) + { + reader.ReadOrThrow(); + if (reader.TokenType == JsonTokenType.EndArray) + { + return default; + } + } + if (reader.TokenType == JsonTokenType.Number) { return new StjParsedCoordinates(ParseCoordinateSequence(ref reader, factory)); diff --git a/test/NetTopologySuite.IO.GeoJSON4STJ.Test/Converters/GeometryConverterTest.cs b/test/NetTopologySuite.IO.GeoJSON4STJ.Test/Converters/GeometryConverterTest.cs index 8a1ddf4..73f713f 100644 --- a/test/NetTopologySuite.IO.GeoJSON4STJ.Test/Converters/GeometryConverterTest.cs +++ b/test/NetTopologySuite.IO.GeoJSON4STJ.Test/Converters/GeometryConverterTest.cs @@ -23,6 +23,18 @@ public void TestReadWithEmptyCoordinatesArray(string type) Assert.That(geom.IsEmpty); } + + [TestCase("MultiPolygon")] + public void TestReadWithArrayOfEmptyCoordinatesArray(string type) + { + string geoJson = @$"{{ ""type"" : ""{type}"", ""coordinates"": [ [] ] }}"; + var options = DefaultOptions; + var geom = Deserialize(geoJson, options); + + Assert.That(geom != null); + Assert.That(geom.IsEmpty); + } + [GeoJsonIssueNumber(57)] [TestCase("{\"type\": \"Point\", \"coordinates\": [], \"bbox\": null}")] [TestCase("{\"type\": \"LineString\", \"coordinates\": [], \"bbox\": null}")]