• 关于json格式在.net前后台传值的详细示例


    首先需要说明的是,json是一种轻量级轻量级的数据交换格式,并且它独立于编程语言,与XML序列化相比,JSON序列化后产生的数据一般要比XML序列化后数据体积小.

    这也是json之所以流行,被广泛使用的原因.

    在.NET中有三种常用的JSON序列化的类,分别是

    System.Web.Script.Serialization.JavaScriptSerializer类、

    System.Runtime.Serialization.Json.DataContractJsonSerializer

    前两种需要.netframework3.X以上的版本才能支持.

    Newtonsoft.Json.JsonConvert类(非微软提供,通用的JSON转换类库),下载网址是:http://www.codeplex.com/json/

     

    在演示json示例之前不得不说明一下,json的三种格式.示例中会演示这三种格式在后台文件里分别对应的是什么样子.

    以及这三种格式在前后台交互时的序列化和反序列化.

    json的三种格式:

         //json格式一
            var json1 = {
                "employees": [
                                { "firstName": "Bill", "lastName": "Gates" },
                                { "firstName": "George", "lastName": "Bush" },
                                { "firstName": "Thomas", "lastName": "Carter" }
                             ]
            }
            //json格式二
            var json2 = [
                         { "firstName": "Bill", "lastName": "Gates" },
                         { "firstName": "George", "lastName": "Bush" },
                         { "firstName": "Thomas", "lastName": "Carter" }
                        ];
            //json格式三
            var json3 = { 'name': 'fujiong', 'lastname': 'ruanjingtian' };

    下面就详细的演示一下,这三种方式和json的三种格式结合的示例:

     先定义一个Person类

    public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }
    public class Handler1 : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                //序列化和反序列化json的类
                JavaScriptSerializer serializer = new JavaScriptSerializer();
    
                //普通json格式:对应json格式一
                string result = serializer.Serialize(new Person() { Name = "张三", Age = 22 });
    
                //对应json格式二
                Person[] arr = new Person[2] { 
                    new Person() { Name = "张三", Age = 22 },
                    new Person() { Name = "李彦宏", Age = 32 }
                };
    
                //对应json格式三
                Dictionary<string, Person[]> arrs = new Dictionary<string, Person[]>();
                arrs.Add("第一条", new Person[] { 
                    new Person() { Name = "张三", Age = 22 },
                    new Person() { Name = "李彦宏", Age = 32 }
                });
    
                //序列化对象数组为json格式
                string result2 = serializer.Serialize(arr);
    
                context.Response.ContentType = "text/plain";
                context.Response.Write(result2);
            }
        }

    前台传到后台的json串反序列化为对象.

    //序列化和反序列化json的类
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                //对应json格式一
                string test = "{ 'Name': 'fumaojiong', 'Age': '22' }";
    
                //对应json格式二
                Person[] arr = new Person[2] { 
                    new Person() { Name = "张三", Age = 22 },
                    new Person() { Name = "李彦宏", Age = 32 }
                };
                string test2 = "[{'Name':'张三','Age':22},{'Name':'李彦宏','Age':32}]";
    
                //对应json格式三
                Dictionary<string, Person[]> arrs = new Dictionary<string, Person[]>();
                arrs.Add("第一条", new Person[] { 
                    new Person() { Name = "张三", Age = 22 },
                    new Person() { Name = "李彦宏", Age = 32 }
                });
                string test3 = "{'第一条':[{'Name':'张三','Age':22},{'Name':'李彦宏','Age':32}]}";
    
                //反序列化json格式三
                Dictionary<string, Person[]> result = (Dictionary<string, Person[]>)serializer.Deserialize(test3, typeof(Dictionary<string, Person[]>));
                Person[] parr = result["第一条"];
    
                //反序列化json格式二
                Person[] parr2 = (Person[])serializer.Deserialize(test2,typeof(Person[]));
    
                //反序列化json格式一
                Person parr3 = (Person)serializer.Deserialize(test, typeof(Person));
    
                Response.Write(parr[1].Name);

    参考博文:http://blog.csdn.net/zhoufoxcn/article/details/6254657

     

  • 相关阅读:
    array_map()与array_shift()搭配使用 PK array_column()函数
    Educational Codeforces Round 8 D. Magic Numbers
    hdu 1171 Big Event in HDU
    hdu 2844 poj 1742 Coins
    hdu 3591 The trouble of Xiaoqian
    hdu 2079 选课时间
    hdu 2191 珍惜现在,感恩生活 多重背包入门题
    hdu 5429 Geometric Progression 高精度浮点数(java版本)
    【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
    hdu::1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/fumj/p/2630824.html
Copyright © 2020-2023  润新知