using Newtonsoft.Json; namespace TableturfBattleServer; public class Placement { public List Players { get; } = []; [JsonConverter(typeof(SpacesAffectedDictionaryConverter))] public Dictionary SpacesAffected { get; } = []; internal class SpacesAffectedDictionaryConverter : JsonConverter> { public override Dictionary? ReadJson(JsonReader reader, Type objectType, Dictionary? existingValue, bool hasExistingValue, JsonSerializer serializer) { var list = serializer.Deserialize>(reader); return list?.ToDictionary(o => o.space, o => o.newState); } public override void WriteJson(JsonWriter writer, Dictionary? value, JsonSerializer serializer) => serializer.Serialize(writer, value?.Select(e => new { space = e.Key, newState = e.Value })); } }