using System; using System.Collections.Generic; using UnityEngine; public static class ExtensionsDictionaryClass { public static string ToJson(this Dictionary source) { return JsonUtility.ToJson(new ExtensionsDictionaryClass.SerializeDictionary(source)); } public static string ToJson(this Dictionary source, bool prettyPrint) { return JsonUtility.ToJson(new ExtensionsDictionaryClass.SerializeDictionary(source), prettyPrint); } public static void FromJson(this Dictionary source, string jsonText) { ExtensionsDictionaryClass.SerializeDictionary serializeDictionary = JsonUtility.FromJson>(jsonText); source.Clear(); if (serializeDictionary.keys != null) { for (int i = 0; i < serializeDictionary.keys.Length; i++) { source.Add(serializeDictionary.keys[i], serializeDictionary.values[i]); } } } [Serializable] public class SerializeDictionary { public SerializeDictionary(Dictionary src) { if (src == null) { this.keys = new Tkey[0]; this.values = new TVal[0]; return; } this.keys = new Tkey[src.Count]; this.values = new TVal[src.Count]; int num = 0; foreach (KeyValuePair keyValuePair in src) { this.keys[num] = keyValuePair.Key; this.values[num] = keyValuePair.Value; num++; } } public Tkey[] keys; public TVal[] values; } }