使用 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
投稿

猜你喜欢

  • Python Django基础二之URL路由系统

    2021-05-12 11:50:07
  • 使用Spark进行实时流计算的方法

    2023-02-13 10:39:34
  • Yii2结合Workerman的websocket示例详解

    2023-11-17 04:48:40
  • Python实现对excel文件列表值进行统计的方法

    2022-08-08 17:42:23
  • js表单检测数字

    2007-10-12 13:52:00
  • python字符串,元组,列表,字典互转代码实例详解

    2022-03-01 22:51:55
  • HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth完全详解

    2024-04-22 22:25:25
  • python中yaml配置文件模块的使用详解

    2021-06-05 08:06:45
  • Python 数据科学 Matplotlib图库详解

    2022-09-24 15:18:34
  • ajax.net对数据库的插入实例

    2024-01-18 01:15:01
  • 深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)

    2024-04-22 13:24:54
  • 分析Python的Django框架的运行方式及处理流程

    2022-03-13 14:47:50
  • 对python中的try、except、finally 执行顺序详解

    2021-07-19 04:08:14
  • 《用户体验的要素》摘记

    2008-08-04 17:59:00
  • Python实现自动添加脚本头信息的示例代码

    2022-07-02 18:12:42
  • vue $mount 和 el的区别说明

    2024-04-28 09:20:24
  • 老生常谈CSS网页布局的意义与副作用

    2008-09-12 12:31:00
  • windows7下mysql8.0.18部署安装教程图解

    2024-01-22 04:20:20
  • 机器学习经典算法-logistic回归代码详解

    2021-05-06 23:56:12
  • Selenium爬取b站主播头像并以昵称命名保存到本地

    2023-05-18 01:26:36
  • asp之家 网络编程 m.aspxhome.com