using System; using System.Text.Json; using System.Text.Json.Serialization; namespace MonoGame.Extended.Serialization.Json; /// /// Converts a value to or from JSON. /// [Obsolete("Use IntervalJsonConverter. Range will be removed in 6.0")] public class RangeJsonConverter : JsonConverter> where T : IComparable { /// public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(Range); /// public override Range Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { Span values = reader.ReadAsMultiDimensional(options); if (values.Length == 2) { if (values[0].CompareTo(values[1]) < 0) { return new Range(values[0], values[1]); } return new Range(values[1], values[0]); } if (values.Length == 1) { return new Range(values[0], values[0]); } throw new InvalidOperationException("Invalid range"); } /// /// /// Throw if is . /// public override void Write(Utf8JsonWriter writer, Range value, JsonSerializerOptions options) { ArgumentNullException.ThrowIfNull(writer); writer.WriteStartArray(); JsonSerializer.Serialize(writer, value.Min, options); JsonSerializer.Serialize(writer, value.Max, options); writer.WriteEndArray(); } }