/************************ * Json工具相关类 * ************************/ using UnityEngine; using System.Collections; using System.Collections.Generic; using System; #region /// /// 封装的可序列化列表对象 /// [Serializable] public class Serialization { [SerializeField] List target; public List ToList() { return target; } public Serialization(List target) { this.target = target; } } /// /// 封装的可序列化字典对象 /// [Serializable] public class Serialization : ISerializationCallbackReceiver { [SerializeField] List keys; [SerializeField] List values; Dictionary target; public Dictionary ToDictionary() { return target; } public Serialization(Dictionary target) { this.target = target; } public void OnBeforeSerialize() { keys = new List(target.Keys); values = new List(target.Values); } public void OnAfterDeserialize() { var count = Math.Min(keys.Count, values.Count); target = new Dictionary(count); for (var i = 0; i < count; ++i) { target.Add(keys[i], values[i]); } } } #endregion /// /// JSON数据工具 /// public class JsonTools { /// /// 列表对象转JSON字符串 /// public static string ListToJson(List l) { return JsonUtility.ToJson(new Serialization(l)); } /// /// JSON字符串转列表对象 /// public static List ListFromJson(string str) { return JsonUtility.FromJson>(str).ToList(); } /// /// 字典对象转JSON字符串 /// public static string DicToJson(Dictionary dic) { return JsonUtility.ToJson(new Serialization(dic)); } /// /// JSON字符串转字典对象 /// public static Dictionary DicFromJson(string str) { return JsonUtility.FromJson>(str).ToDictionary(); } /// /// JSON字符串转对象 /// public static T ObjectFromJson(string str) { return JsonUtility.FromJson(str); } }