現在新版的Unity(印象中是從5.3開始)已經提供了原生的Json庫,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具類的使用,發現使用還挺方便的,所以打算把項目中的Json庫換成Unity原生的。在Unity3D開發中Json有什么用呢?下面就來說說Json在Unity中的使用。
一、Json有什么用?
Json在Unity中還是挺常用的一種數據格式的。那么,在Unity開發中哪些地方會用到Json呢?我相信沒有太多編程經驗的人肯定對這個問題比較感興趣。在Unity中,有三種情況下會用到Json:
- 跟服務器進行數據交互
- 配置文件
- 跟Android/iOS數據交互
目前這三種情況在我們項目中都用到了,搞明白了Json怎么用,這些都很簡單,在這里就不贅述了,直接進入正題。
二、Json怎么用?
using UnityEngine;
using System;
public class JsonExample : MonoBehaviour
{
void Start()
{
#region 序列化
MyZone myZone = new MyZone();
myZone.blogUrl = "http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles";
myZone.blogName = "Sheh偉偉的博客";
Blog blog = new Blog();
blog.url = "http://www.jianshu.com/p/4243b99a5b84";
blog.name = "快速上手Unity原生Json庫";
blog.time = DateTime.Now.ToString("yyyy-MM-dd");
myZone.blog = blog;
string json = JsonUtility.ToJson(myZone);
Debug.Log(json);
#endregion
#region 反序列化
string blogStr = Resources.Load<TextAsset>("MyZone").text;
myZone = JsonUtility.FromJson<MyZone>(blogStr);
Debug.Log(myZone.ToString());
#endregion
}
}
[Serializable]
public class MyZone
{
/// <summary>
/// 博客主頁地址
/// </summary>
public string blogUrl;
/// <summary>
/// 博客名
/// </summary>
public string blogName;
/// <summary>
/// 本篇博客
/// </summary>
public Blog blog;
public override string ToString()
{
return string.Format("blogUrl:{0}, blogName:{1}, blog:{2}", blogUrl, blogName, blog.ToString());
}
}
[Serializable]
public class Blog
{
/// <summary>
/// 文章名稱
/// </summary>
public string name;
/// <summary>
/// 本篇博客鏈接
/// </summary>
public string url;
/// <summary>
/// 博客發表時間
/// </summary>
public string time;
public override string ToString()
{
return string.Format("<name:{0}, url:{1}, time:{2}>", name, url, time);
}
}
Json文件
{
"blogUrl": "http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles",
"blogName": "Sheh偉偉的博客",
"blog":
{
"name": "快速上手Unity原生Json庫",
"url": "http://www.jianshu.com/p/4243b99a5b84",
"time": "2016-09-27"
}
}
三、注意事項
經過測試發現JsonUtility不支持序列化DateTime、Dictionary和Hashtable,其他類型暫時還沒有測試,有興趣的可以自行測試。
四、參考資料
如果本文有錯誤之處還請幫忙指出。本文歡迎轉載,但轉載請注明出處:http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles