维斯李

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的验证还比较少。

posted on 2013-12-22 09:15  WS李  阅读(271)  评论(0编辑  收藏  举报

导航