winform 程序中 反序列化

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;

 

 

 

 

你可能感兴趣的:(WinForm)