Unity3D中Json解析的几种方式

Json解析的几种方式:

1.比较流行的listjson(数据对象必须和json一对一):链接: https://pan.baidu.com/s/14o_ggxU4-FmOWAc_ANDeww 提取码: 3qas
listjson提供了多样化的解析,可以解析成JsonData,也可以通过JsonMapper 转成自定义的mode数据对象,功能比较丰富,但是在通过JsonMapper转成自定的对象时,自定义对象的字段要和解析的json字段一对一(json里面的字段,自定义的对象一定要有),不然会解析失败,listjson解析很严谨

JsonData da = JsonMapper.ToObject(jsonData); 通过da["xx"]获取
EquipmentBindingData da = JsonMapper.ToObject<EquipmentBindingData>(jsonData) ;//赋值在EquipmentBindingData类型的变量中
注意:实例化类,类中变量可以设置{get;set;}

2.目前unity自带 JsonUtility(不能解析复杂的json)

EquipmentBindingData equipmentData = JsonUtility.FromJson<EquipmentBindingData>(jsonData)
注意
类中变量不可以可以设置{get;set;}
定义类要 [Serializable] 进行实例化

3.Newtonsoft.Json (推荐可以解析复杂的json,不需要和json字段一对一 ,灵活 :链接: https://pan.baidu.com/s/14JegrgxgUCPDwUEJRQIm4Q 提取码: uqcu

EquipmentBindingData da = JsonConvert.DeserializeObject<EquipmentBindingData>(jsonData);

例子:

{
"data":[
{
"k":"工艺品",
"v":"10000167660245",
"t":"1585899359000"
},
{
"k":"石头",
"v":"10000167660244",
"t":"1585899359000"
},
{
"k":"书本",
"v":"10000167660243",
"t":"1585899359000"
}
],
"success":true
}

解析对象类:

    [Serializable]
    public class DevData
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string k;
        /// <summary>
        /// 
        /// </summary>
        public string v;
        /// <summary>
        /// 
        /// </summary>
        public string t;
    }

    [Serializable]
    public class EquipmentBindingData
    {
        /// <summary>
        /// 
        /// </summary>
        public List<DevData> data = new List<DevData>();
        /// <summary>
        /// 
        /// </summary>
        public bool success;
    }
上一篇:Unity3D----触发检测与碰撞检测


下一篇:Unity3d简单的txt文本读取