1.什么是Json

  --《摘抄》

  在深入讨论Json之前,先让我们对它有一个感性的认识。宏观上看,Json是一种轻量的数据格式,在各种地方传递数据。如果单用眼睛看,Json里的数据是被保存在花括号({})中的,而如果从用途上进一步分析,最终我们会得出结论:Json是一种数据交换格式。

1.1Json是一种数据交换格式

  数据交换格式是一种在不同平台间传递数据的文本格式。除Json外,你也可能听说过XML这种数据交换格式。像XML和Json这样的数据交换格式非常重要,我们需要它们来实现不同系统之间的数据交换。

  举个例子,假如有这样一个世界,它由数百个散步在海洋中的小岛所组成。每个海岛都是相互独立的,并有自己独特的语言和习俗。这些岛上都有许多商人,他们需要在海岛间进行长途航行。这种对外贸易是所有海岛经济必须的组成部分,也有助于提高岛民的生活水平。而这一切的实现都要归功于那训练有素的送信海鸥。

  这些海鸥在岛间飞行,携带着需求量最大的货物的信息。商人根据这些信息来决定他们的下一站,以及在长途航行前应储备哪些货物。也正是凭借这些关键的数据,各个海岛间才可以互通有无,共同繁荣。

  别忘了,每个海岛的语言都不同。如果这些信息用各种不同的语言编写,那么每个海岛都要花上一大笔钱来研究各种语言,并组建一支翻译团队。这既昂贵,又费时。不过岛民们十分聪明,他们决定统一使用一种语言,用一种标准的数据格式来传达贸易数据。这样,每个海岛都只需雇佣一个懂得这一数据格式的翻译就好了,由他们来解读海鸥带来的贸易报告。

  这个海岛的例子其实就映射出了我们在实际生活中所使用的技术。我们的生活中充满了各种系统,它们所使用的语言和架构都不尽相同。而对于使用这些系统的企业和组织来说,它们之间相互通信的能力又是不可或缺的。但如果每一个系统都必须有i个专门针对其他所有系统的数据组织形式的翻译组件,那么它们之间的交流便要消耗许多时间和资源,这显然是不合理的。所以,这些系统间也需要一种单一的数据格式,以及单一的翻译组件。

  Json就是这样一种被许多系统用于交互数据的数据交换格式。有人把它叫做“数据交换格式”,甚至直接叫“数据格式”。在本书中,我们把Json看作一种数据交换格式,是因为“交换”往往意味着两个或多个实体之间的相互交流。

  然而,不是所有的系统都支持使用Json来交换数据。数据交换格式有很多,如前面提到的XML(extensible markup language,可扩展性标记语言),可能早在Json被发明前就已经在应用了。毕竟现实世界不会像例子中的海岛世界那么简单。有许多系统可以并还在使用像XML这样的格式,或是用表格和分隔符来表示数据的格式,如逗号分隔值(CSV)。现实中的每个“海岛”所选择的数据交换格式,也通常会和数据格式与“海岛”的风俗、语言、建筑结构等因素间的联系相挂钩。

  示例中的海岛世界里,每一个海岛都有它自己的语言。而海鸥所传送的报告上的数据所用的格式,是一种与语言无关的格式。这使得每个岛只需要雇佣一个解释贸易报告的翻译即可。Json也一样,只不过数据不是通过海鸥传送的,而是通过网络中的0和1这样的信号传送。翻译自然也不是人,而是系统的一个解析器,用于将数据转换为系统可以读取的形式。

 

1.2Json独立于编程语言

 

  Json的全程是JavaScript Object Notation(JavaScript对象表示法)。这个名字可能会让人误以为要想理解和使用Json,得先学习JavaScript。诚然,在学习Json前学一点JavaScript肯定会有帮助,毕竟Json源于JavaScript的一个子集。但如果你以后用不到JavaScript,那也没有必要去学习它,因为数据交换格式是独立于语言的。你仍可以在你自己的系统中使用你自己的语言。

  Json基于JavaScript对象字面量。关于“如何”使用Json,更适合在关于语法(第2章)和数据类型(第3章)的章节讨论。这一章中最重要的还是讨论“为什么”。既然数据交换格式需要独立于语言,那么Json不仅源于一门语言,还在名字中给这种语言打广告,这是否有些自相矛盾?为什么?

  回到海岛的例子,想象一下众海岛代表开会决定数据格式是怎样一种情形。当数以百计的海岛代表们前来参会,并尝试创造一种数据格式的时候,他们要做的第一件事就是寻找共同点。

  每一个海岛的语言也许都是独一无二的,但是海岛居民们也会在其中发现共同点。绝大多数语言都由人来发声,并包含一种由某种字符组成的书面语言形式。此外,大多数语言还都有面部表情和手势。也许有一些海岛的居民使用其他的方式来沟通,如敲击木棒或是眨眼睛,不过大多数海岛都会在其语言的口语形式和书面形式中找出相同点。

  现实世界中同样有着数以百计的编程语言。虽然有一些非常流行且广泛使用的语言,但是语言大家族整体是多样化的。当大学生们选择计算机科学专业,为变成生涯做准备时,他们不会学习所有的语言。他们一般会从一门语言开始学习,而且语言的选择并没有学习变成中通用的概念重要。一旦他们掌握了这些概念,学习另一门编程语言时就会轻松很多,因为他们已经有能力分辨那些共有的特征和功能。

  再来看看Json,如果我们将“JavaScript对象表示法”中的“JavaScript”去掉,剩下的就是“对象表示法”。所以忘了JavaScript吧。可以说,我们使用的是一种基于对象表示法的数据交换格式。而“对象”在编程中,尤其是在面向对象变成(OOP)中,是很常见的概念。绝大多数计算机科学专业的学生都会在学习编程时接触到对象的概念。

  我们不过多地解释对象,而是把重点放到“表示法”上。表示法是指以个可以表示诸如数字或单词等数据的字符系统。不管你是否理解什么是对象,都不难看出用某个符号去描述编程语言中共有概念的价值所在。

  再回到海岛的例子,岛民们发现了一种出现在大多数语言中的表示法。举例来说,许多岛民都使用计数算筹来表示数字,具体用法也大多类似;同时,他们也都能理解一些表示生活中常见事物(如小麦或布)的符号。甚至那些用眨眼来交流的岛民都能接受这种格式。

  尽管大部分海岛之间达成了共识,仍有一小部分海岛,比如那个通过敲击木棒来交流的海岛,发现他们不能理解这种格式。一种好的数据交换格式必然要适用于大多数系统,但也常常会有小部分不适用的系统。这时我们常会用到一个术语:可移植性,或者说在平台和系统间传输信息的兼容性,是一种数据交换格式所追求的一个重要指标。

  回到表示法这一概念上,虽说Json这一表示法起源于JavaScript,但是真正重要的是表示法本身。Json不仅独立于语言,而且使用了一种在许多编程语言中都能找到的共同元素的表达方式。通过这种表达数据的方式,即便是那些不支持面向对象编程的语言,也会发现Json这种格式是可以接受的。

 

 

1.3专业术语和概念

术语:

·Json

  JavaScript对象表示法(JavaScript Object Notation)。

·表示法

  一个用于表示诸如数字或单词等数据的字符系统。

·数据交换格式

  用于在不同的平台或系统间交换数据的文本。

·可移植性

  以一种对双方系统都兼容的方式在平台间传递信息。

 

概念:

·Json  是一种数据交换格式。
·Json  独立于编程语言(你不必先学习JavaScript)。
·Json  基于JavaScript对象字面量表示法(重点在于“表示法”)。
·Json  表达数据的方式对通用的编程概念都很友好。

 

转载于:https://www.cnblogs.com/nan-/p/6149751.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值