Editor/Data/ArchStyleName.cs
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Sunless.Architecture;

// Reads a bool/number token as a string — migration for properties whose type changed after plans were written.
public sealed class ArchStyleNameConverter : JsonConverter<string> {
	public override string Read( ref Utf8JsonReader reader, System.Type type, JsonSerializerOptions options ) {
		switch ( reader.TokenType ) {
			case JsonTokenType.String:
				return reader.GetString();

			case JsonTokenType.True:
			case JsonTokenType.False:
			case JsonTokenType.Null:
				return "";

			case JsonTokenType.Number:
				return "";

			default:
				reader.Skip();

				return "";
		}
	}

	public override void Write( Utf8JsonWriter writer, string value, JsonSerializerOptions options ) {
		writer.WriteStringValue( value ?? "" );
	}
}