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;

 

 

 

 

posted on 2012-11-18 20:01 水墨.MR.H 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/StudyLife/archive/2012/11/18/2776256.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值