介绍
在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
{//玩家IDpublic 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插件
序列化: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
序列化:SerializeObject()
反序列化:DeserializeObject<>()
void Start(){//加载资源TextAsset obj = Resources.Load<TextAsset>("player" );if (obj != null){//JsonConvert.DeserializeObjectData 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);}}