最近因項(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í)沒用過,以后再研究....