using Newtonsoft.Json; namespace TableturfBattleServer; public class Placement { [JsonProperty("players")] public List Players { get; } = new(); [JsonProperty("spacesAffected"), JsonConverter(typeof(SpacesAffectedDictionaryConverter))] public Dictionary SpacesAffected { get; } = new(); 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 })); } } }