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;
}