zoukankan      html  css  js  c++  java
  • 【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<stringobject> json = serializer.DeserializeObject(jsonStr) as Dictionary<stringobject>;
     
                Dictionary<stringobject> obj = json["fruits"as Dictionary<stringobject>;
     
                Console.WriteLine(obj["a"]);
     
                Console.ReadLine();

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

        [DataContract]
            public class DanTengObj
            {
                [DataMember(Order = 1, Name = "fruits")]
                public Fruits fruits { getset; }
                [DataMember(Order = 2, Name = "name")]
                public Name name { getset; }
     
                [DataContract]
                public class Fruits
                {
                    [DataMember(Order = 1, Name = "a")]
                    public string a { getset; }
                    [DataMember(Order = 2, Name = "b")]
                    public string b { getset; }
                    [DataMember(Order = 3, Name = "c")]
                    public string c { getset; }
                }
     
                [DataContract]
                public class Name
                {
                    [DataMember(Order = 1, Name = "z")]
                    public string z { getset; }
                    [DataMember(Order = 1, Name = "l")]
                    public string l { getset; }
                }
            }
     
            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

  • 相关阅读:
    Linux之ARP——种种
    Linux之内核参数——backlog/somaxconn
    CLOSE_WAIT、CLOSE_WAIT原因,危害,如何避免
    OVS——大杂烩
    Linux 网络栈——
    OpenShift——大杂烩
    协议之ICMP——种种
    Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]
    Neutron 理解 (6): Neutron 是怎么实现虚拟三层网络的 [How Neutron implements virtual L3 network]
    CIDR地址块及其子网划分(内含原始IP地址分类及其子网划分的介绍)
  • 原文地址:https://www.cnblogs.com/doubleyong/p/3512361.html
Copyright © 2011-2022 走看看