介绍
在Unity开发过程中,Json是比较常用的一种数据存储文本,尤其是在和第三方交互中,基本都是json格式。
先给出一个Json示例,我们来看看是如何解析的。
{ "Player": [ { "id": 1001, "name": "王二", "job": 1 }, { "id": 1002, "name": "小红", "job": 2 }, { "id": 1003, "name": "刚子", "job": 3 } ] }
复制
方法一:JsonUtility
JsonUtility是Unity内置的用于解析Json的方法
序列化:ToJson()
反序列化:FromJson<>()
首先需要定义解析后的实体类
[System.Serializable] public class PlayerData { //玩家ID public int id; //玩家名字 public string name; //玩家职业 public int job; } [System.Serializable] public class Data { public PlayerData[] Player; }
复制
解析代码如下
void Start() { //加载资源 TextAsset obj = Resources.Load<TextAsset>("player" ); if (obj != null) { //解析 Data m_Data = JsonUtility.FromJson<Data>(obj.text); //打印 foreach (PlayerData item in m_Data.Player) { Debug.Log("ID:"+item.id + " Name:" + item.name + " Job:" + item.job); } } }
复制
方法二:LitJson
需要:LitJson插件
下载链接:LitJson资源下载
序列化:ToJson()
反序列化:ToObject<>()
void Start() { //加载资源 TextAsset obj = Resources.Load<TextAsset>("player" ); if (obj != null) { //使用JsonMapper.ToObject解析 Data m_Data = JsonMapper.ToObject<Data>(obj.text); //打印 foreach (PlayerData item in m_Data.Player) { Debug.Log("ID:"+item.id + " Name:" + item.name + " Job:" + item.job); } } }
复制
方法三:Newtonsoft
需要:Newtonsoft.Json.dll
下载链接:Newtonsoft.Json.dll
序列化:SerializeObject()
反序列化:DeserializeObject<>()
void Start() { //加载资源 TextAsset obj = Resources.Load<TextAsset>("player" ); if (obj != null) { //JsonConvert.DeserializeObject Data m_Data = JsonConvert.DeserializeObject<Data>(obj.text); //打印 foreach (PlayerData item in m_Data.Player) { Debug.Log("ID:"+item.id + " Name:" + item.name + " Job:" + item.job); } }
复制