使用 JSON 进行数据传输

来源:ibm 时间:2008-06-15 07:12:00 

在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地在应用程序中移动数据和对象。

如果您阅读了本系列前面的文章,那么应已对数据格式有了相当的认识。前面的文章解释了在许多异步应用程序中如何恰当地使用纯文本和简单的名称/值对。可以将数据组合成下面这样的形式:

firstName=Brett&lastName=McLaughlin&email=brett@newInstance.com


  这样就行了,不需要再做什么了。实际上,Web 老手会意识到通过 GET 请求发送的信息就是采用这种格式。

  然后,本系列讨论了 XML。显然,XML 得到了相当多的关注(正面和负面的评价都有),已经在 Ajax 应用程序中广泛使用。关于如何使用 XML 数据格式,可以回顾 本系列前面的文章:

<request>
<firstName>Brett</firstName>
<lastName>McLaughlin</lastName>
<email>brett@newInstance.com</email>
</request>



  这里的数据与前面看到的相同,但是这一次采用 XML 格式。这没什么了不起的;这只是另一种数据格式,使我们能够使用 XML 而不是纯文本和名称/值对。

  本文讨论另一种数据格式,JavaScript Object Notation(JSON)。JSON 看起来既熟悉又陌生。它提供了另一种选择,选择范围更大总是好事情。

  选择的意义

  在深入研究 JSON 格式的细节之前,您应该了解为什么要用两篇文章讨论另一种数据格式(是的,本系列中的下一篇文章也讨论 JSON),尤其在已经了解了如何使用 XML 和纯文本的名称/值对的情况下。其实,原因很简单:解决任何问题的选择越多,找到问题的最佳 解决方案的可能性就越大,这比只能使用一个 解决方案要好得多。

回顾名称/值对和 XML

  本系列已经用了大量篇幅讨论适合使用名称/值对和 XML 的场合。总是应该首先考虑使用名称/值对。对于大多数异步应用程序中的问题,使用名称/值对几乎总是最简单的解决方案,而且它只需要非常基本的 JavaScript 知识。

  实际上,除非有某种限制迫使您转向 XML,否则用不着考虑使用别的数据格式。显然,如果要向需要 XML 格式的输入的服务器端程序发送数据,那么希望使用 XML 作为数据格式。但是,在大多数情况下,对于需要向应用程序发送多段信息的服务器,XML 是更好的选择;换句话说,XML 通常更适合用来向 Ajax 应用程序做出响应,而不是从 Ajax 应用程序发出请求。

添加 JSON

  在使用名称/值对或 XML 时,实际上是使用 JavaScript 从应用程序中取得数据并将数据转换成另一种数据格式。在这些情况下,JavaScript 在很大程度上作为一种数据操纵语言,用来移动和操纵来自 Web 表单的数据,并将数据转换为一种适合发送给服务器端程序的格式。

  但是,有时候 JavaScript 不仅仅作为格式化语言使用。在这些情况下,实际上使用 JavaScript 语言中的对象来表示数据,而不仅是将来自 Web 表单的数据放进请求中。在这些情况下,从 JavaScript 对象中提取数据,然后再将数据放进名称/值对或 XML,就有点儿多此一举 了。这时就合适使用 JSON:JSON 允许轻松地将 JavaScript 对象转换成可以随请求发送的数据(同步或异步都可以)。

  JSON 并不是某种魔弹;但是,它对于某些非常特殊的情况是很好的选择。不要认为您不会遇到这些情况。阅读本文和下一篇文章来了解 JSON,这样,遇到这类问题时您就知道该怎么办了。

JSON 基础

  简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

标签:JSON,数据,xml,JavaScript
0
投稿

猜你喜欢

  • WEB2.0网页制作标准教程(1)选择什么样的DOCTYPE

    2007-11-13 12:57:00
  • 网站设计中的面包屑[译]

    2009-03-22 15:42:00
  • 利用ajax制作在线翻译聊天室

    2007-12-28 21:44:00
  • [翻译]网页设计中的模式窗口

    2009-05-29 18:00:00
  • 浅谈购物类网站如何保持视觉设计的一致性

    2009-03-30 16:02:00
  • asp防止同时登陆的问题

    2007-10-26 12:19:00
  • 如何将txt文本中的数据轻松导入MySQL表中

    2009-03-06 17:35:00
  • ASP用户登录模块的设计

    2008-11-21 16:55:00
  • 你的网页“面目全非”过吗?

    2010-07-02 16:24:00
  • 前后端分离开发模式初体验

    2009-06-24 11:44:00
  • access MDB 转换为 Execl(ASP类)

    2008-07-19 12:10:00
  • MySQL Order By语法

    2011-01-04 19:58:00
  • asp禁止站外盗链、判断星期几方法

    2007-10-02 12:58:00
  • 一个奇怪的CSS现象

    2010-02-10 12:28:00
  • 网页设计进阶之一 (步骤和大局观)

    2008-08-23 10:39:00
  • 从数据行入手保护SQL Server数据安全

    2009-04-13 10:28:00
  • sql函数:去掉html代码

    2008-04-07 12:44:00
  • 回答XML与HTML的区别

    2007-12-03 10:58:00
  • asp如何实现网络打印?

    2010-05-24 18:31:00
  • 纯数字不重复排列的另类方法

    2009-12-04 18:25:00
  • asp之家 网络编程 m.aspxhome.com