zoukankan      html  css  js  c++  java
  • 关于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

     

  • 相关阅读:
    第一个小程序-简单计算器
    You have to be inside an angular-cli project in order to use the serve command.
    执行命令npm install typescript@2.3.1 --save-dev,发现了不得了的东西
    安装gulp或者npm淘宝镜像cnpm时出现错误,proxy was not installed probaly
    @angular/compiler-cli@4.3.6 requires typescript@'>=2.1.0 <2.4.0' but 2.5.2 was found instead.
    The "@angular/compiler-cli" package was not properly installed. Error: TypeError: Cannot read property 'Private' of undefined
    angula安装各种包出现"Please try running this command again as root/Administrator."的解决方法
    The “@angular/compiler-cli” package was not properly installed
    关于angular开发中报错Cannot find module 'webpack/lib/node/NodeTemplatePlugin'问题的解决办法若干
    psql:定位慢查询
  • 原文地址:https://www.cnblogs.com/fumj/p/2630824.html
Copyright © 2011-2022 走看看