Unity—JSON處理

1:  JSON (JavaScript Object Notation)

    隨着JavaScript的流行與互聯網應用,JavaScript裏面最強大的數據類型Object,使用起來極其的方便,爲了能更好的做數據交換,設計了JSON協議,能夠將JavaScript裏面的Object,變成可以閱讀的文本數據及JSON數據格式。實現JavaScript裏面的Object與JSON的轉換,Object對象轉換成JSON數據以後,方便傳輸與存儲,JSON變爲Object方便對象重建;

2: python語言, Lua語言等其它的腳本語言都有類是於JavaScript的Object數據結構,所以JSON數據能在其它的語言裏面也非常方便的使用;

3: JSON採用完全獨立於語言的文本格式(string),易於閱讀與編寫以及解析與生成,在很多時候數據交換都採用JSON, 數據--->JSON-->傳輸,存儲--->解碼JSON-->數據

4: 上面的過程又叫序列化與反序列化;

那麼直接上代碼:

using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
  
[System.Serializable]  
class Subsub  
{  
    public string string_subsub;   
}  
  
[System.Serializable]  
class Sub   
{  
    public int int_a = 10;  
    public string string_b = "Hello word";  
    public Subsub subsub;  
  
    [SerializeField]  
    bool bool_c = true;  
  
    //public void fun()  
    //{  
    //    Debug.Log("啥也不是");   
    //}  
}  
  
public class JSON : MonoBehaviour  
{  
    // Start is called before the first frame update  
    void Start()  
    {  
  
        Sub sub = new Sub();  
        string json_string = JsonUtility.ToJson(sub);  
  
        Debug.Log("封裝的字符串"+json_string);  
  
        Sub sub_rec = new Sub();  
        JsonUtility.FromJsonOverwrite(json_string, sub_rec);  
  
        Debug.Log(sub_rec.string_b);  
  
    }  
  
    // Update is called once per frame  
    void Update()  
    {  
          
    }  
}  

序列化只會序列化類裏面的public成員,所以如果你想序列化私有成員,就必須在私有成員那裏聲明爲可序列化段

Unity中有專門的接口幫你去將類序列化成string,

也有專門的接口將已經序列成string的字符串反序列化到提供的對象裏面

按照以上的類,序列化出來的string是這樣的

可以從註釋的代碼裏面看見,我還嘗試聲明瞭一個public函數,按能否序列化出來,但是失敗了,所以我推斷,Unity的JsonUtility.ToJson()接口只能序列化類的成員變量。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章