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

     

  • 相关阅读:
    SharePoint 2013 中的SQL Server 安全
    SharePoint 2013 的HTML5特性之响应式布局
    SharePoint 2013 一些小技巧
    SharePoint 2013 排错之"Code blocks are not allowed in this file"
    SharePoint 2013 创建搜索中心及搜索设置
    SharePoint 2013 使用PowerShell创建State Service
    SharePoint 2013 内容部署功能简介
    SharePoint 使用PowerShell恢复误删的网站集
    SharePoint 自定义WebPart之间的连接
    linux之misc及使用misc创建字符设备
  • 原文地址:https://www.cnblogs.com/fumj/p/2630824.html
Copyright © 2011-2022 走看看