I thought I would share a useful converter I wrote for my MUD client to serialize/deserialize a WPF SolidColorBrush
using System.Text.Json
.
The only note is that I hard coded the default color as beige if a color doesn't exist (that fit my needs but might need to be updated to fit yours).
/*
* Avalon Mud Client
*
* @project lead : Blake Pell
* @website : http://www.blakepell.com
* @copyright : Copyright (c), 2022 All rights reserved.
* @license : MIT
*/
using System.Text.Json;
namespace Avalon.Common
{
/// <summary>
/// <see cref="JsonConverter"/> for a WPF <see cref="SolidColorBrush"/>.
/// </summary>
public class SolidColorBrushConverter : JsonConverter<SolidColorBrush>
{
public override SolidColorBrush Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var hexValue = reader.GetString();
if (string.IsNullOrWhiteSpace(hexValue))
{
return Brushes.Beige;
}
return (SolidColorBrush)(new BrushConverter().ConvertFrom(hexValue) ?? Brushes.Beige);
}
public override void Write(Utf8JsonWriter writer, SolidColorBrush? value, JsonSerializerOptions options)
{
if (value == null)
{
writer.WriteStringValue(Brushes.Beige.Color.ToString());
return;
}
writer.WriteStringValue(value.Color.ToString());
}
}
}