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