#nullable enable using System; using Newtonsoft.Json; using Version = Hive.Versioning.Version; namespace IPA.JsonConverters { internal class SemverVersionConverter : JsonConverter { public override Version? ReadJson(JsonReader reader, Type objectType, Version? existingValue, bool hasExistingValue, JsonSerializer serializer) => reader.Value is string s && Version.TryParse(s, out var version) ? version : existingValue; public override void WriteJson(JsonWriter writer, Version? value, JsonSerializer serializer) { if (value == null) writer.WriteNull(); else writer.WriteValue(value.ToString()); } } }