using System; using System.Text.Json; using System.Text.Json.Serialization; using Microsoft.Xna.Framework; namespace MonoGame.Extended.Serialization.Json; /// /// Converts a value to or from JSON. /// public class ColorJsonConverter : JsonConverter { /// public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(Color); /// public override Color Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var value = reader.GetString(); return value[0] == '#' ? ColorHelper.FromHex(value) : ColorHelper.FromName(value); } /// /// /// Throw if is . /// public override void Write(Utf8JsonWriter writer, Color value, JsonSerializerOptions options) { ArgumentNullException.ThrowIfNull(writer); var hexValue = ColorHelper.ToHex(value); writer.WriteStringValue(hexValue); } }