Unity5.3 JsonUtility的使用

最近因項(xiàng)目需求,必須得擼擼unity了, 寫點(diǎn)筆記,記錄記錄下, 在Android用Gson解析Json數(shù)據(jù),用起來還是滿愉快的, 轉(zhuǎn)到Unity后,用了下SampleJson感覺太麻煩了,好的框架用爽了后,人就會(huì)變得也越懶,于是就想用其它更好用的框架,最終找到了unity5.3 以后 unity自己提供了一個(gè)JSON data的序列化與反序列化的類JsonUtility。</br>目前提供3個(gè)接口:

學(xué)Android 開發(fā)的朋友們肯定對(duì)Google的Gson不會(huì)陌生, 用起來是何等的爽, 這個(gè)Unity版的JsonUitlity應(yīng)該就仿照Gson寫的吧...
少bb了,it‘s time to show me the code,現(xiàn)在我要解析的這個(gè)json 數(shù)據(jù)如下:一個(gè)head, 一個(gè) body且包含一個(gè)數(shù)組bookList, 還有一個(gè)page

{
    "head": {
        "status": 200,
        "message": "ok"
    },
    "body": {
        "bookList": [
            {
                "id": 1000,
                "title": "吶喊",
                "author": "魯迅"
            },
            {
                "id": 1001,
                "title": "彷徨",
                "author": "魯迅"
            }
        ]
    },
    "page": {
        "index": 1,
        "size": 500
    }
}
注意 解析的對(duì)象必須要支持序列化即用[Serializable]標(biāo)記的類, 每個(gè)類的field 必須要與json的objecty一一相匹配,如: ResponseInfo的field body對(duì)應(yīng)Json對(duì)象的body
public class ResponseInfo<T>
 {       
     public T body;
     public Head head;
     public Page page;
 }

 [Serializable]
 public class Head
 {
     public string message;
     public int status;
 }

 [Serializable]
 public class Page
 {
     public int index;
     public int size;
 }
[Serializable]
public class BookEntity {  
    public int id;
    public string title;
    public string author;
}

[Serializable]
public class BookInfo
 {
     public List<BookEntity> bookList;       
 }
public class Test : MonoBehaviour {
    string json;

    void Start () 
    {    
        //=== 構(gòu)造一個(gè)將對(duì)象序列化JsonUtility.ToJson的過程 ===//
        
        /// 初始化Head
        Head head = new Head();
        head.status = 200;
        head.message = "ok";
        
        /// 初始化Body
        BookInfo body = new BookInfo();
        
        List<BookEntity> bookList = new List<BookEntity>();
        BookEntity entity1 = new BookEntity();
        entity1.id = 1000;
        entity1.title = "吶喊";
        entity1.author = "魯迅";
        
        BookEntity entity2 = new BookEntity();
        entity2.id = 1001;
        entity2.title = "彷徨";
        entity2.author = "魯迅";
        
        bookList.Add(entity1);
        bookList.Add(entity2);
        
        body.bookList = bookList;
        
        /// 初始化 Page
        Page page = new Page();
        page.index = 2;        
        page.size = 500;
        
        /// 構(gòu)造 ReponseInfo
        ResponseInfo<BookInfo> info = new ResponseInfo<BookInfo>();  
        info.head = head;
        info.page = page;
        info.body = body;
        
        ////得到序列化的json
        json = JsonUtility.ToJson(responseInfo);
        
        //=== 將json通過JsonUtility.FromJson 反序列化 ===//
        ResponseInfo<BookInfo> responseInfo =JsonUtility.FromJson<ResponseInfo<BookInfo>>(json);

        /// ok, that's all
    }       
}

怎么樣,是不是比 MiniJson, SampleJson用起來方便^^

還有個(gè)接口JsonUtility.FromJsonOverwrite(json, myObject) ,暫時(shí)沒用過,以后再研究....

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,466評(píng)論 25 708
  • 1.概述2.Gson的目標(biāo)3.Gson的性能和擴(kuò)展性4.Gson的使用者5.如何使用Gson 通過Maven來使用...
    人失格閱讀 14,353評(píng)論 2 18
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,973評(píng)論 19 139
  • 平衡計(jì)分卡就是從財(cái)務(wù),客戶,過程,創(chuàng)新與學(xué)習(xí)四個(gè)緯度來管理公公,經(jīng)營人生。 作為一個(gè)管理者,注重員工優(yōu)點(diǎn)缺點(diǎn),揚(yáng)長...
    臨淄茂業(yè)DDM_閆丹丹閱讀 257評(píng)論 0 0
  • 天氣愈見干燥,除了一般護(hù)膚產(chǎn)品外,嬌嫩唇部的護(hù)理滋潤功夫絕不能少。要免受脫皮、唇紋顯現(xiàn)等問題的困擾,一支信得過的保...
    美一天CHANNEL閱讀 1,110評(píng)論 2 5