それを加えた専用Dictionaryクラスを作ればよい。
If you want use Dictionary in JsonUtility.
Than make wrapper class. It is very simple!
[System.Serializable] //================================================================== /** * @brief Dictionary for JsonUtility */ //================================================================== public class Dict: Dictionary , ISerializationCallbackReceiver { [SerializeField] private List keys = new List (); [SerializeField] private List vals = new List (); public void OnBeforeSerialize() { keys.Clear(); vals.Clear(); var e = GetEnumerator(); while ( e.MoveNext() ) { keys.Add( e.Current.Key ); vals.Add( e.Current.Value ); } } public void OnAfterDeserialize() { this.Clear(); int cnt = ( keys.Count<=vals.Count )? keys.Count : vals.Count; for (int i=0; i<cnt; ++i ) this[keys[i]] = vals[i]; } } // あとはDictionaryをDictに置き換えるだけで簡単にJsonUtility対応になる // You only be replace Dictionary to Dict, then Easy use JsonUtility with Dictionary! public class DictTest : MonoBehaviour { Dict<string,int> test = new Dict<string, int>{ { "ABC", 123}, { "DEFGHI", 456}, { "JKL", 7891011} }; string s = string.Empty; // Update is called once per frame void Update () { if( Input.GetKeyDown(KeyCode.T) ){ s = JsonUtility.ToJson(test); Debug.Log("<color=#FF0000>" + s + "</color>"); } if( Input.GetKeyDown(KeyCode.F) ){ var d = JsonUtility.FromJson<Dict >(s); foreach( var _ in d ){ Debug.Log("<color=#00FFFF>[" + _.Key + "]</color>" + _.Value); } } } }