using System; using System.Collections.Generic; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace _2DGAMELIB { public class OrderedDictionaryConverter : JsonConverter> where T1 : notnull { public override OrderedDictionary ReadJson(JsonReader reader, Type objectType, OrderedDictionary existingValue, bool hasExistingValue, JsonSerializer serializer) { var dict = new OrderedDictionary(); if (reader.TokenType == JsonToken.Null) return dict; var array = JArray.Load(reader); foreach (var item in array) { var key = item["Key"].ToObject(serializer); var value = item["Value"].ToObject(serializer); dict.Add(key, value); } return dict; } public override void WriteJson(JsonWriter writer, OrderedDictionary value, JsonSerializer serializer) { writer.WriteStartArray(); foreach (var key in value.Keys) { writer.WriteStartObject(); writer.WritePropertyName("Key"); serializer.Serialize(writer, key); writer.WritePropertyName("Value"); serializer.Serialize(writer, value[key]); writer.WriteEndObject(); } writer.WriteEndArray(); } } }