使用unity內置的JsonUtility方法 處理json數據

json,一種非常流行的數據格式。json最大的功勞在於取代了xml,做過職業採集的人大概會明白我說的是什麼意思,哈哈哈。
在遊戲的存檔、更新、數據傳輸過程中都需要一個高效、易讀、緊湊的數據格式。從各種角度來說json都是最好的選擇。在unity中我們可以使用內置的JsonUtility方法來輕鬆的實現json字符串與c#對象的互轉。

創建json對象結構

使用Serializable語義可以使類可以被序列化。多個類層級調用,就相當於json的多層數據。下面代碼定義了一個2層的json數據結構

//  二層json數據
[Serializable]//序列化
public class AssetbundleFile
{
    public string name;
    public string url;
}
// 頂層json數據
[Serializable]//序列化
public class AssetbundleResource
{
    public string version;
    public bool updating;
    public AssetbundleFile[] assetbundleFiles;
}

以上代碼定義的json結構實際上就是這樣的:

{
	"version":"",
	"updating":false,
	"assetbundleFiles":[
		{
			"name":"","url":""
		}
	]
	...
}

創建json對象, 並填充數據

   void Main(){
        //
        AssetbundleResource assetbundleResource = new AssetbundleResource();
        assetbundleResource.assetbundleFiles = new AssetbundleFile[]{
            new AssetbundleFile(){
                name = "file1",
                url = "111"
            },
            new AssetbundleFile(){
                name = "file2",
                url = "222"
            }
        };

json對象轉json數據字符串

        // c#對象轉json字符串
        string jsonStr = JsonUtility.ToJson(assetbundleResource);
        Debug.Log("json字符串:"+ jsonStr);

json數據字符串轉json對象

        // json字符串轉c#對象
        AssetbundleResource _assetbundleResource = JsonUtility.FromJson<AssetbundleResource>(jsonStr);
        Debug.Log("數據0的name數據爲:" + _assetbundleResource.assetbundleFiles[0].name);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章