<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />

VersionConverter

Converts a Version to and from a string (e.g. "1.2.3.4").
using Newtonsoft.Json.Utilities; using System; using System.Globalization; using System.Runtime.CompilerServices; namespace Newtonsoft.Json.Converters { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public class VersionConverter : JsonConverter { public override void WriteJson(JsonWriter writer, [System.Runtime.CompilerServices.Nullable(2)] object value, JsonSerializer serializer) { if (value == null) writer.WriteNull(); else { if (!(value is Version)) throw new JsonSerializationException("Expected Version object value"); writer.WriteValue(value.ToString()); } } [return: System.Runtime.CompilerServices.Nullable(2)] public override object ReadJson(JsonReader reader, Type objectType, [System.Runtime.CompilerServices.Nullable(2)] object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) return null; if (reader.TokenType == JsonToken.String) try { return new Version((string)reader.Value); } catch (Exception ex) { throw JsonSerializationException.Create(reader, "Error parsing version string: {0}".FormatWith(CultureInfo.InvariantCulture, reader.Value), ex); } throw JsonSerializationException.Create(reader, "Unexpected token or value when parsing version. Token: {0}, Value: {1}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType, reader.Value)); } public override bool CanConvert(Type objectType) { return (object)objectType == typeof(Version); } } }