【winform 学习】C# 转换成JSON对象

C#里面对json的处理有2种,JavaScriptSerializer和DataContractJsonSerializer。

JavaScriptSerializer读出来就是key-value pair这种Dictionary<string, object>的东西,这个比较通用。
DataContractJsonSerializer类似于其他的Serializer,比如XMLSerializer一类的,是对象序列化/反序列化用的

第一种示例代码:

                (测试发现using System.Web.Script.Serialization不能在Winform 中引用,所以JavaScriptSerializer 不用在winform中使用

                   那winform 下怎么解析JSON 可以参考:http://q.cnblogs.com/q/46365/  1.Json.NET  2. 引用官方的System.Web.Extensions.dll

                   dll文件:可以网上下载,或者参考下面地址的方面:http://wenku.it168.com/d_000825166.shtml):

             string  jsonStr =  @"{""fruits"":{""a"":""orange"",""b"":""banana"",""c"":""apple""},""name"":{""z"":""zhangsan"",""l"":""lisi""}}" ;
 
             JavaScriptSerializer serializer =  new  JavaScriptSerializer();
 
             Dictionary< string object > json = serializer.DeserializeObject(jsonStr)  as  Dictionary< string object >;
 
             Dictionary< string object > obj = json[ "fruits" as  Dictionary< string object >;
 
             Console.WriteLine(obj[ "a" ]);
 
             Console.ReadLine();

第二种:DataContractJsonSerializer很不错,(不过,要申明DataContract数据数据契约,如果参数的名字不是固定的话,用第一种更好)

    [DataContract]
         public  class  DanTengObj
         {
             [DataMember(Order = 1, Name =  "fruits" )]
             public  Fruits fruits {  get set ; }
             [DataMember(Order = 2, Name =  "name" )]
             public  Name name {  get set ; }
 
             [DataContract]
             public  class  Fruits
             {
                 [DataMember(Order = 1, Name =  "a" )]
                 public  string  a {  get set ; }
                 [DataMember(Order = 2, Name =  "b" )]
                 public  string  b {  get set ; }
                 [DataMember(Order = 3, Name =  "c" )]
                 public  string  c {  get set ; }
             }
 
             [DataContract]
             public  class  Name
             {
                 [DataMember(Order = 1, Name =  "z" )]
                 public  string  z {  get set ; }
                 [DataMember(Order = 1, Name =  "l" )]
                 public  string  l {  get set ; }
             }
         }
 
         static  void  DanTengJsonTest()
         {
             string  jsonStr =  @"{""fruits"":{""a"":""orange"",""b"":""banana"",""c"":""apple""},""name"":{""z"":""zhangsan"",""l"":""lisi""}}" ;
 
             DataContractJsonSerializer js =  new  DataContractJsonSerializer( typeof (DanTengObj));
 
             using  (MemoryStream ms =  new  MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
             {
                 DanTengObj obj = js.ReadObject(ms)  as  DanTengObj;
                 Console.WriteLine(obj.fruits.a);
             }
         }

参考地址:http://bbs.csdn.net/topics/390545176

转载于:https://www.cnblogs.com/doubleyong/p/3512361.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值