using System.Runtime.Serialization.Json;
(如果不能引用.json),注意在项目引用中右击引用 System.ServiceModel 和 System.ServiceModel.Web, System.Runtime.Serialization
将json格式的数据反序列化为对象,有以下注意。
1. josn 数据格式为 {"a":1,"b":2,"c":"3"} ,数组格式为[ {"a":1,"b":2,"c":"3"}]
2. 反序列化之前,要自定义类。而且这个类中的所有成员必须是 json 数据 属性的子集
(可以只有a属性,b属性;或者a,b,c属性都有。但是不能有json中不存在的属性值如d,e,f,这样反序列化会报错)
3. 反序列化数组只要声明 public class xx: List<x>,然后直接将调用方法将 json数据反序列化成 xx 对象数组就行了。
json数组反序列化 -------------------通用代码
public static T JsonDeserialize<T>(string jsonString)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
}
例:
1.现有个json数据 {"a":1,"b":2,"c":"3"},注意 不是数组数据
1)首先生成类
[Serializable]
public class mydata
{
public string a = null;
public string b = null; //不能有a,b,c意外的任何属性
}
2)调用代码
mydata aa = JsonDeserialize<mydata>(a.context);
buy_link_seed=aa.buy_link_seed;
2. 假如现在是json数组。[{"a":1,"b":2,"c":"3"}]
此时在上面代码基础上应添加一个类
public class mydatas : List<mydata>
{
}
然后将json数组数据 反序列化为 mydatas (也就是对象mydata的 数组)
调用代码:
mydatas aa = JsonDeserialize<mydatas>(a.context);
buy_link_seed=aa[0].buy_link_seed;