From 85b0efc42a8b078d631afdb82f2eb6c6ad54b822 Mon Sep 17 00:00:00 2001 From: charliesheh <59520443+charliesheh@users.noreply.github.com> Date: Sun, 10 May 2026 20:32:34 -0700 Subject: [PATCH] Handle OSM JSON version as string --- src/OsmSharp/IO/Json/Converters/OsmJsonConverter.cs | 7 ++++++- test/OsmSharp.Test/IO/Json/API/OsmTests.cs | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/OsmSharp/IO/Json/Converters/OsmJsonConverter.cs b/src/OsmSharp/IO/Json/Converters/OsmJsonConverter.cs index 628637d..3242e6f 100644 --- a/src/OsmSharp/IO/Json/Converters/OsmJsonConverter.cs +++ b/src/OsmSharp/IO/Json/Converters/OsmJsonConverter.cs @@ -41,7 +41,12 @@ public override Osm Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSeri switch (propertyName) { case "version": - osm.Version = reader.GetDouble(); + osm.Version = reader.TokenType switch + { + JsonTokenType.Number => reader.GetDouble(), + JsonTokenType.String => double.Parse(reader.GetString()), + _ => throw new JsonException() + }; break; case "generator": osm.Generator = reader.GetString(); diff --git a/test/OsmSharp.Test/IO/Json/API/OsmTests.cs b/test/OsmSharp.Test/IO/Json/API/OsmTests.cs index 80cfb63..6315254 100644 --- a/test/OsmSharp.Test/IO/Json/API/OsmTests.cs +++ b/test/OsmSharp.Test/IO/Json/API/OsmTests.cs @@ -81,5 +81,17 @@ public void Osm_FromJson_Complete_ShouldReadCompleteJson() Assert.AreEqual(1, osm.Ways.Length); Assert.AreEqual(1, osm.Relations.Length); } + + [Test] + public void Osm_FromJson_VersionAsString_ShouldReadVersion() + { + var osm = JsonSerializer.Deserialize( + "{\"version\":\"0.6\",\"generator\":\"OsmSharp\",\"elements\":[]}" + ); + + Assert.NotNull(osm); + Assert.AreEqual(0.6, osm.Version); + Assert.AreEqual("OsmSharp", osm.Generator); + } } } \ No newline at end of file