using System; using System.Text.Json; using System.Text.Json.Serialization; namespace MonoGame.Extended.Serialization.Json; /// /// Converts a value to or from JSON. /// public class Size2JsonConverter : JsonConverter { /// public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(SizeF); /// /// /// Thrown if the JSON property does not contain a properly formatted value /// public override SizeF Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var values = reader.ReadAsMultiDimensional(options); if (values.Length == 2) { return new SizeF(values[0], values[1]); } if (values.Length == 1) { return new SizeF(values[0], values[0]); } throw new JsonException("Invalid Size2 property value"); } /// /// /// Throw if is . /// public override void Write(Utf8JsonWriter writer, SizeF value, JsonSerializerOptions options) { ArgumentNullException.ThrowIfNull(writer); writer.WriteStringValue($"{value.Width} {value.Height}"); } }