• ASP.NET中的XML和JSON


      

    一、DOM简介

      1.XML

      定义:XML是一种跨语言、跨平台的数据储存格式

      2.什么是DOM

      DOM(document object model)文档对象模型:是一种允许程序脚本动态的访问更新文档内容结构样式的、独立于平台和语言的规范化接口

      2.DOM的分类(级别)

      (1)level1

      专注HTML和XML文档模型,含有文档导航和处理功能。

     (2)level2

      在level1基础上添加了样式表对象模型并提供了对XML命名空间的支持

      (3)level3

      规定了内容模型(DTD和Schemas)和文档验证。同时还规定了文档加载和保存、文档查看、文档格式化和关键事件。

      3.DOM模型

        1、元素节点(Element):节点类型(NodeType)为1

        2、属性节点(Attribute):节点类型(NodeType)为2

        3、文本节点(Text):节点类型(NodeType)3

        4、注释节点(Comments):节点类型(NodeType)8

        5、文档节点(Document):节点类型(NodeType)9

    二、.NET中的DOM常用对象

                            .NET中基于DOM核心类

    类名

    说明

    XmlDocument

    表示一个XML文档

    XmlNode

    表示XML文档中的单个节点

    XmlNodeList

    表示排序的节点集合

    XmlElement

    表示一个元素

    XmlAttribute

    表示一个属性

    XmlAttributeCollection

    表示元素节点的属性集合

    XmlText

    表示元素或属性的文本内容

        1.XmlNode类

      XmlNode类没有公共构造函数,所以不能用new关键字创建XmlNode示例

        2.XmlDocument类

      派生自XmlNode类,其实例表示一个Xml文档对象。

        3.XmlNodeList类

      一个节点集合类,其元素为XmlNode类型;XmlNodeList没有公共构造函数,因此不能创建和删除XmlNodeList类的实例。

        4.XmlElement类

      XML文档的核心,可以表示一个XML文档中的元素节点,派生自XmlNode类

    三、JSON创建对象

      1.JSON的构建结构

        --》“键/值”对的集合。

        --》值的有序列表

       例:Javascript中创建JSON

      

    var site=
    {
      url:"www.baidu.com",  
      name:"百度",
      author:"baidu",    
      say:function(){document.write(this.name+"say hello")}
    };

    四、ASP.NET中的JSON序列化与反序列化

      1)创建JSON序列化与反序列化的帮助类

      

    using System;
    using System.Collections.Generic;
    using System.Ling;
    using System.Web;
    using System.IO;
    using System.Text;
    using System.Runtime.Serialization.Json;
    
    namespace xxxx
    {
      ///<summary>
      /// JSON序列化与反序列化的帮助类
      ///</summary>
          public class JsonHelper
         {
              public static string JsonSerializer<T>(T t)
               {
                     DataContractJsonSerializer ser=new DataContractJsonSerializer(typeof(T));
                   MemoryStream ms=new MemoryStream();
                    ser.WriteObject(ms,t);
                    string jsonString=Encoding.UTF8.GetString(ms.ToArray());
                    ms.Close();
                      return jsonString;
                }
    
                //JSON反序列化
               public static T JsonDeserialize<T>(String jsonString)
               {
                  DataContractJsonSerializer ser= new DataContractJsonSerializer(type(T));
                  MemoryStream ms=new MemoryStream(Encoding.UTF8.getBytes(jsonString));
                    T obj=(T)ser.ReadObject(ms);
                     return obj;
                 }
         }
    }            

       2)创建Person类

      

    public class Person
    {
        public string Name{get;set;}
        public int Age{get;set;}
    }

      3)通过JSONHelper序列化Person对象

      

    public partial class JSON_DeMO :System.Web.UI.Page
    {
         protected void Page_Load(object sender, EventArgs e)
          {
               Person p= new Person();
               p.Name="张三";
               p.Age=28;
               string jsonString=JsonHelper.JsonSerializer<Person>(p);
                Respon.Write(jsonString);
          }
    }

      5)通过JSONHelper反序列化JSON字符串,转换为Person对象

      

    public partial class JSON_DEMO : System.Web.UI.Page
    {
           protected void Page_Load(object sender , EventArgs e)
            {
                 string jsonString ="{"Age":28."Name":"张三"}";
                  Person p=JsonHelper.JsonDeserialize<Person(jsonString);
                  Response.Write("反序列化JSON字符串:“”+"<br/>);  
                  Response.Write("姓名:"+p.Name+"</br>");
                  Response.Write("年龄:"+p.Age);
             }  
    }

       例:JSON序列化和反序列化集合、字典、数组的处理

      

    namespace WebJSONTest
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                List<Person> list = new List<Person> 
                {
                    new Person{Name="张三",Age=20,LastLoginTime=DateTime.Now},
                    new Person{Name="小白",Age=25,LastLoginTime=DateTime.Now}
                };
                string jsonString = jsonHelper.JsonSerializer<List<Person>>(list);
                Response.Write(jsonString);
            }
        }
    }

      2.XML与JSON对象比较

        1)、客户端

       对于Json数据,只需要调用JavaScript的Eval方法就可以将JSON字符串序列化成为Javascript对象,然后就可以直接访问了。

      对于XML数据,其本身是一个DOM Tree的数据结构,开发人员必须使用DOM ApI来访问处理XML数据,且各个浏览器对DOM的支持也不尽相同。

        2)、服务器端

       在服务器想客户端传输数据时,由于XML出现比JSON早,所以XML优于JSON。

      3)、安全性

      JSON本来是Javascript的一个安全子集,不会含有赋值和调用。因此在将JSON数据转换成为Javascript对象的时候,许多Javascript库都使用Eval函数,所以在使用JSON作为数据交换格式的时候,必须保障JSON安全。(用正则表达式检查JSON数据是否含有恶意代码关键字)。在这一点上,XML相对来说更安全。

      4)、性能

     从数据传输量来看JSON要优于XML,JSON更轻量级一些。同时在数据的解析速度上,JSON也优于XML。

      5)、数据验证的角度

       XML的验证技术更成熟,而目前关于JSON的验证还比较少。

  • 相关阅读:
    作业
    第四次作业
    第三次作业
    作业
    第4次作业
    第3次作业,c语言
    第二次作业
    黄义方 作业4
    课堂作业
    第三次作业
  • 原文地址:https://www.cnblogs.com/chef5-3/p/3485680.html
Copyright © 2020-2023  润新知