JSON 核心技术应用(免费版)(5)

2019-03-27 16:43

,它让服务器知道现在发送的是文本,正如它从常规的HTML表单中得到的一样。

另一个简单提示是URL的末尾追加了时间。这就确保了请求不会在它第一次被发送后即缓存,而是会在此方法每次被调用后重新创建和重发;此URL会由于时间戳的不同而稍微有些不同。这种技巧常被用于确保到脚本的POST每次都会实际生成新请求且Web服务器不会尝试缓存来自服务器的响应。

3.3.3 JSON就只是文本

不管使用 GET 还是 POST,关键之处在于 JSON 就只是文本。由于不需要特殊编码而且每个服务器端脚本都能处理文本数据,所以可以轻松利用 JSON 并将其应用到服务器。假如 JSON 是二进制格式的或是一些怪异的文本编码,情况就不这么简单了;幸好 JSON 只是常规的文本数据(正如脚本能从表单提交中所接收到的数据,在 POST 段和 Content-Type 头中亦可以看出),所以在将数据发送到服务器时无需太费心。

3.4 在服务器上解释JSON

一旦你编写完客户端 JavaScript 代码、允许用户与 Web 表单和 Web 页的交互、收集发送给服务器端程序以做处理所需的信息,此时,服务器就成为了应用程序(如果调用了异步使用的服务器端程序,则可能是我们认为的所谓的“Ajax 应用程序”)中的主角。在此时,您在客户端所做的选择(比如使用 JavaScript 对象,然后将其转换成 JSON 字符串)必须要与服务器端的选择相匹配,比如使用哪个 API 解码 JSON 数据。

3.4.1 处理JSON的两个步骤

不管在服务器端使用何种语言,在服务器端处理 JSON 基本上就需要两个步骤。

(1) 针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。

(2) 使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。

以上差不多就是目前所应了解的大致内容了。接下来,我们对每个步骤进行较为详细的

- 20 -

JSON相关文档 介绍。

3.4.2 寻找JSON解析器

寻找 JSON 解析器或工具箱最好的资源是 JSON 站点。在这里,除了可以了解此格式本身的方方面面之外,还可以通过各种链接找到 JSON 的各种工具和解析器,从 ASP 到 Erlang,到 Pike,再到 Ruby,应有尽有。您只需针对自己编写脚本所用的语言下载相应的工具箱即可。为了让服务器端脚本和程序能够使用此工具箱,可以根据情况对其进行选择、扩展或安装(如果在服务器端使用的是 C#、PHP 或 Lisp,则可变性更大)。

例如,如果使用的是 PHP,可以简单将其升级至 PHP 5.2 并用它完成操作;在 PHP 这个最新版本默认包含了 JSON 扩展。实际上,那也是在使用 PHP 时处理 JSON 的最好方法。如果使用的是 Java servlet,json.org 上的

org.json

包显然就是个不错的选择。在这种情

况下,可以从 JSON Web 站点下载 json.zip 并将其中包含的源文件添加到项目构建目录。编译完这些文件后,一切就就绪了。对于所支持的其他语言,同样可以使用相同的步骤;使用何种语言取决于您对该语言的精通程度,最好使用您所熟悉的语言。

3.4.3 使用JSON解析器

一旦获得了程序可用的资源,剩下的事就是找到合适的方法进行调用。比如,假设为 PHP 使用的是 JSON-PHP 模板:

通过该模板,可将获得的所有数据(数组格式的、多行的、单值的或 JSON 数据结构中的任何内容)转换成原生 PHP 格式,放在 $value 变量中。

如果在 servlet 中使用的是 org.json 包,则会使用如下代码:

- 21 -

JSON相关文档

4 JSON的优点和不足

对于JSON,首先要明白JSON和XML一样也是一种简单文本格式。相对于XML,它更加易读、更便于肉眼检查。在语法的层面上,JSON与其他格式的区别是在于分隔数据的字符,JSON中的分隔符限于单引号、小括号、中括号、大括号、冒号和逗号。下图是一个JSON有效负载:

将上面的JSON有效负载用XML改写,如下:

- 22 -

JSON相关文档

是不是很相似?但它们并不相同。下面将详细阐述采用JSON句法的优点和不足。

4.1 优点

乍看上去,使用JSON的数据分隔符的优点可能并不那么明显,但存在一个根本性的缘由:它们简化了数据访问。使用这些数据分隔符时, JavaScript引擎对数据结构(如字符串、数组、对象)的内部表示恰好与这些符号相同。

这将开创一条比DOM技术更为便捷的数据访问途径。下面列举几个JavaScript代码片段来说明这一过程,这些代码片段会访问先前的JSON代码片段中的信息:

(1)访问JSON中的名称: addressbook.name

(2)访问JSON中的地址: addressbook.address.street

(3)访问JSON中的电话号码第一位:addressbook.address.phoneNumbers[0]

JSON的另一个优点是它的非冗长性。在XML中,打开和关闭标记是必需的,这样才能满足标记的依从性;而在JSON中,所有这些要求只需通过一个简单的括号即可满足。在包含有数以百计字段的数据交换中,传统的XML标记将会延长数据交换时间。目前还没有正式的研究表明JSON比XML有更高的线上传输效率;人们只是通过简单的字节数比较发现,对于等效的JSON和XML有效负载,前者总是小于后者。至于它们之间的差距有多大,特别是在新的XML压缩格式下它们的差距有多大,有待进一步的研究。

此外,还有一下一些优点:

(1)轻量级的数据交换格式 (2)人们读写更加容易

(3)易于机器的解析和生成

(4) 能够通过JavaScript中eval()函数解析JSON

(5)JSON支持多语言。包括:ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Lua.

4.2 不足

和许多好东西都具有两面性一样,JSON的非冗长性也不例外,为此JSON丢失了XML

- 23 -

JSON相关文档 具有的一些特性。命名空间允许不同上下文中的相同的信息段彼此混合,然而,显然在JSON中已经找不到了命名空间。JSON与XML的另一个差别是属性的差异,由于JSON采用冒号赋值,这将导致当XML转化为JSON时,在标识符(XML CDATA)与实际属性值之间很难区分谁应该被当作文本考虑。

另外,JSON片段的创建和验证过程比一般的XML稍显复杂。从这一点来看,XML在开发工具方面领先于JSON。

5 JSON与XML的比较

5.1 可读性

JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

5.2 可扩展性

XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

5.3 编码难度

XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

5.4 解码难度

XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。

5.5 实例比较

XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。

现假设有一个用户数据包括:用户名、密码、所在部门、性别、年龄。 用XML表示如下:

- 24 -

JSON相关文档

用JSON表示如下:

与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,同样具有可读性。XML比较适合于标记文档,而JSON却更适合于时行数据交换处理。

6 JSON在js中的应用示例

6.1 例一

1. function showJSON() { 2. var user =

3. {

4. \

5. \20,

6. \ 7.


JSON 核心技术应用(免费版)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学人教版语文二年级上册识字6精品课件

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: