using System; using System.Collections.Generic; using System.Text.Json.Serialization; using System.Text.Json; namespace Terminal.Gui { class DictionaryJsonConverter : JsonConverter> { public override Dictionary Read (ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var dictionary = new Dictionary (); while (reader.Read ()) { if (reader.TokenType == JsonTokenType.StartObject) { reader.Read (); if (reader.TokenType == JsonTokenType.PropertyName) { string key = reader.GetString (); reader.Read (); T value = JsonSerializer.Deserialize (ref reader, options); dictionary.Add (key, value); } } else if (reader.TokenType == JsonTokenType.EndArray) break; } return dictionary; } public override void Write (Utf8JsonWriter writer, Dictionary value, JsonSerializerOptions options) { writer.WriteStartArray (); foreach (var item in value) { writer.WriteStartObject (); //writer.WriteString (item.Key, item.Key); writer.WritePropertyName (item.Key); JsonSerializer.Serialize (writer, item.Value, options); writer.WriteEndObject (); } writer.WriteEndArray (); } } }