• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Ajax中数据传递的另一种模式 javascript Object Notation思想(JSON)
    Ajax是“异步javascript和XML”的缩写已经众所周知,然而虽然XML是看上去的重要组成部分,它却不是必须的。一位资深的软件工程师Douglas Crock ford 开发了一个内建于 javascript 的数据格式,称为javascript 对象表示(JSON,javascript Object Notation),意思是直接使用Ajax对象来传递信息,可以读作“Jason”。
    1. 什么是 JSON
    JSON概念很简单,JSON 是一种轻量级的数据格式,他基于 javascript 语法的子集,即数组和对象表示。由于使用的是 javascript 语法,因此JSON 定义可以包含在javascript 文件中,对其的访问无需通过基于 XML 的语言来额外解析。不过在使用 JSON 之前,很重要的一点是理解 javascript 中数组及对象字面量的特殊语法。
    1.1 数组字面量
    数组字面量,是用一对方括号括起一组用逗号隔开的 javascript 值,例如:
    复制代码 代码如下:

    var aNames=["hello", 12, true , null];
    [html]
    1.2 对象字面量
    对象字面量,是通过两个花括号来定义的。在花括号内可以放置任意数量的“名称-值”对,定义格 式字符串值”。除了最后一行外,每个“名称-值”对后必须有一个逗号(这与Perl 中的联合数组的定义有些类似)。例如:
    [code]
    var oCar = {
    "color": "red",
    "doors" : 4,
    "paidFor" : true
    };

    1.3 混合字面量
    我们可以混用对象和数组字面量,来创建一个对象数组,或一个包含数组的对象。例如:
    复制代码 代码如下:

    {comments:[
    {
    id:1,
    author:"someone1",
    url:"http://someone1.x2design.net",
    content:"hello"
    },
    {
    id:2,
    author:"someone2",
    url:"http://someone2.x2design.net",
    content:"hello"
    },
    {
    id:3,
    author:"someone3",
    url:"http://someone3.x2design.net",
    content:"hello"
    }
    ]};

    1.4 JSON 语法
    在Ajax应用中,就是服务器直接生成javascript语句,客户端获取后直接用eval方法来获得这个对象,这样就可以省去解析XML的性能损失。同时,在javascript 通信中使用JSON作为数据格式的好处很明星,可以立即获得数据的值,因此可以更快的访问其中包含的数据。
    var oCarInfo = eval("(" + sJSON + ")");
    请记住:在javascript中花括号也是一个语句。要让解析器知道这个花括号表示的是一个对象而非一个语句的唯一方法是能否找到封装它的圆括号(它是用来说明代码是一个表达式而非一个语句)。
    1.5 JSON 编码和解码
    作为 JSON 资源的一部分,Corockford 开发了一个能够实现 JSON 和Javascript 对象直接解码和编码的工具。这个工具的源程序可以在 www.crockford.com/JSON/json.js 中下载。
    在上面提出用到eval() 存在些固有的不足:它是用来对传入的任何 Javascript 代码求值的,而不仅仅针对JSON。因此,当涉及企业级 web 应用程序开发时,它存在很大的安全隐患。为了解决这个问题,可以使用只用来将 JSON 代码转换为 Javascript 的解析器 JSON.parse() 方法来实现。例如:
    var oObject = JSON.parse (sJSON);
    同时,它也提供了一种将 Javascript 对象转换为 JSON 字符串(数据传输时使用的)的工具(在Javascript 中没有内建这种功能支持)。你要做的只是将对象传入到 JSON.Stringify() 方法。请看下面的例子:
    复制代码 代码如下:

    var oCar = new Object();
    oCar.doors = 4;
    oCar.color = "blue";
    oCar.year = 1995;
    oCar.drivers = new Array("Penny", "Dan" , "Kris");
    document.write(JSON.stringify(oCar));

    这段代码将输出如下所示的JSON 字符串:
    {"doors" : 4, "color" : "blue", "year" :1995, "drivers" : ["Penny", "Dan" , "Kris"]}


    2. JSON 与 XML
    正如上面所说,JSON 与 XML 相比的一大优点就是它更加简单。
    请看 XML 数据表示实例:
    使用XML表示:
    复制代码 代码如下:

    comments>
    comment>
    id>1/id>
    author>someone1/author>
    url>http://someone1.x2design.net/url>
    content>hello/content>
    /comment>
    comment>
    id>2/id>
    author>someone2/author>
    url>http://someone2.x2design.net/url>
    content>someone1/content>
    /comment>
    comment>
    id>3/id>
    author>someone3/author>
    url>http://someone3.x2design.net/url>
    content>hello/content>
    /comment>
    /comments>

    使用JSON表示:
    复制代码 代码如下:

    {comments:[
    {
    id:1,
    author:"someone1",
    url:"http://someone1.x2design.net",
    content:"hello"
    },
    {
    id:2,
    author:"someone2",
    url:"http://someone2.x2design.net",
    content:"hello"
    },
    {
    id:3,
    author:"someone3",
    url:"http://someone3.x2design.net",
    content:"hello"
    }
    ]};

    很容易发现,许多冗余的信息不见了。由于不需要有与开始标签(opening tag)匹配的结束标签(closing tag),因此传送相同的信息所需的字节数大大降低了。创始人 Corockford 将其称之为“XML 的减肥方案”)。
    JSON 格式的数据与 XML 相比,缺点是对于外行人可读性更差。当然,有一种观点是,数据交换格式不是用肉眼观察的。如果是通过工具对来回传送的数据进行创建和解析,那么的确没有理由要求数据必须使人们易于阅读。问题的实质在于:存在可用的 JSON 工具。

    3. 服务器端 JSON 工具
    java :java JSON 工具,由Douglas Crock ford 开发,可在 www.crockford.com/JSON/java/
    中下载,它可以在 JSP 中使用。

    4. JSON 优势与缺点
    JSON不仅减少了解析XML解析带来的性能问题和兼容性问题,而且对于javascript来说非常容易使用,可以方便的通过遍历数组以及访问对象属性来获取数据,其可读性也不错,基本具备了结构化数据的性质。不得不说是一个很好的办法,而且事实上google maps就没有采用XML传递数据,而是采用了JSON方案。

    JSON 另外一个优势是跨域可行性,例如你在www.xxx.com的网页里使用是完全可行的,这就意味着你可以跨域传递信息。而使用XMLHttpRequest却获取不了跨域的信息,这是javascript内部的安全性质所限制的。

    JSON看上去很美,是不是就能完全取代XML呢?事实并非如此,而原因就在于XML的优势:通用性。要使服务器端产生语法合格的javascript代码并不是很容易做到的,这主要发生在比较庞大的系统,服务器端和客户端有不同的开发人员。它们必须协商对象的格式,这很容易造成错误。

    无论如何,JSON是一个诱人的技术,准备做一个大量的试用。希望届时可以获取大的性能提高。
    您可能感兴趣的文章:
    • IOS 应用之间的跳转和数据传递详解
    • Vuejs第九篇之组件作用域及props数据传递实例详解
    • 深入浅析JavaScript中数据共享和数据传递
    • Android开发之利用Intent实现数据传递的方法
    • 基于startActivityForResult方法处理两个Activity之间数据传递问题
    • Android实现Activities之间进行数据传递的方法
    • Ruby on Rails中MVC结构的数据传递解析
    • jQuery学习笔记之 Ajax操作篇(二) - 数据传递
    • asp.net不同页面间数据传递的多种方法
    • 解析activity之间数据传递方法的详解
    • 深入理解Activity之间的数据传递
    • WinForm中窗体间的数据传递交互的一些方法
    • ASP.NET 页面间数据传递方法小结
    • C#中数据的传递以及ToolStripProgressBar
    上一篇:Ajax无刷新Url提交页面
    下一篇:ajax回调函数参数传递正确方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Ajax中数据传递的另一种模式 javascript Object Notation思想(JSON) Ajax,中,数据,传递,的,另一种,