JSON--通用数据交换语言

图片来自网络

在 Quora 上看到一个关于 "JSON是什么" 的回答,用了两个例子解释了 为什么需要JSONJSON是怎么工作的,非常容易理解。

JSON的来源

如果挪威想将一条非常重要的信息送到西班牙,那么他们该怎么操作?

挪威可以使用挪威语将信息发出,然后在西班牙找一个既懂挪威语,又懂西班牙语的家伙,叫他把发送过来的信息翻译成西班牙语。

或者是在挪威找一个既懂挪威语,又懂西班牙语的家伙,叫他把信息翻译成西班牙语之后,再向西班牙发送。

以上的两种方式,我们都需要一个懂两种语言的人充当翻译官。

另外,如果挪威希望和俄罗斯交流,就需要聘请一个既懂挪威语又懂俄语的翻译官;如果希望和法国交流,就需要聘请一个既懂挪威语又懂法语的翻译官;如果希望和韩国交流,就需要聘请一个既懂挪威语又懂韩语的翻译官 ... ....

上面描述的交流方式未免太过麻烦,一个国家需要与多少个国家交流,就需要配置多少个翻译官,造成严重的资源浪费。如果我们选择一种语言作为各个国家之间通用的交流语言,情况就会好很多。

比如,我们选择将英语作为通用的交流语言,各个国家都配置一个既懂本国语言,又懂英语的翻译官,就可以实现与其他国家之间的无障碍交流。

Example

同样的,在编程界也有各种语言,而各种编程语言之间的数据交互也遇到了相同的问题。

JSON就在各个编程语言之间充当一种通用的语言,其作用仅仅是用于数据交流,不涉及逻辑。

例如 ,PHP 和 JavaScript 希望彼此之间进行数据交互,它们不需要特意去学习对方的语言。PHP将要传送的数据变为JSON格式发送给JavaScript,JavaScript接收之后,还原成自己的数据格式;同样的,也可以JavaScript将数据变为JSON格式,由PHP接收后还原成自己的数据格式。

现在,你可以只学一种编程语言,外加数据交互语言--JSON,就可以与其他任何语言的程序进行通讯;

虽然,多国交流 的例子很好的解释了 JSON是什么,但却不能解释JSON如何工作。毕竟,英语是一种非常复杂的语言,需要大量的时间来学习,而 JSON “语言” 却非常简单易学。让我们用另一个类比来描述 JSON这种 “语言” 的 “语法” ;

JSON 如何工作

让我们暂时忘记上面的例子。想象一下,你的老板交给你一项新的任务:写一份关于2017年新车的报告。

你努力地搜寻了能够找到的所有资料,然后列出了大段文字描述所有2017年的新车:

2017新车报告-1

虽然,你努力收集了大量的信息,但我不认为你的老板会愉快的表扬你的努力。

问题就在于,老板要通过读、理解并对你所收集的所有文字有了一个概览之后,才能找到真正对他有用的信息;

你投入了大量的努力却没有得到老板的认可也许会让你有一丢丢的沮丧,不过,你可以换种报告形式!

你可以对内容进行划分,并对内容做一个目录,效果如下:

2017新车报告-2

然后,你把这份资料交给老板。你老板想寻找关于 Batmobile 的信息,根据目录,这些信息位于第三页,他将报告翻到第3页,它所看到的内容如下:

report-page3

老板简单快速的找到了他想要的信息!关于 Batmobile ,主要有3部分的内容 DescriptionImageColor

几个月后,老板希望你再做一个报告,与上次的报告相比,每个类型的车的内容由3部分变为4部分。你只需要在上次报告的基础上,添加一点小修改 ,看起来如下图所示:

report-update

还是相似的布局,老板表示非常满意。

好了,因为这种内容呈现的格式非常有效,你将这种格式称为 JSON : 首先,有一个项目列表,说明文档主要描述的是什么项目,而每一个项目又分为小项目,每个小项目还可以划分为小小项目 ... ... ;这样,就能快速,高效的缩小查找范围,找到目标信息! JSON 也就变得流行起来,成为员工和老板之间交流的标准格式。

现在,回到真实世界,看看真实的JSON是怎么样的。计算机也需要对数据进行结构化的组织,才能快速正确的获取目标数据。

理解JSON

综合上述两个类比:我们有两个不同的部分,它们之间希望能够和对方进行通讯。它们有各自不同的语系,为了实现交流,它们将英语作为通用语,英语有自己对词汇的组织方式,这种组织方式就称为语法。有了标准语法之后,双方就可以进行正常交流了。

格式标准(即信息被组织的方式)被双方所接受,不管它们所使用的编程语言是什么,进行数据交换时,使用相同的格式,这就称为JSON。

JSON是一种 文本语法或者称为格式 ,用于数据在不同用编程语言之间的传递!

最后一个例子:PHP和JavaScript之间想向对方发送信息。理论上来说,它们能够发送一大堆无组织的文本,但是,为了能够 "读懂" 这一大堆文本,它们不得不附上说明手册来解释文本内容的含义,这样,PHP需要编写特定的代码来解析JavaScript发送来的数据,而JavaScript也一样要编写代码解析PHP的数据。

JSON提供了确定的组织方式,这种组织方式独立于语言,而且,由于JSON的流行,几乎所有的编程语言都有解释 JSON 的库,这样,不同编程语言只要调用现成的JSON库,就可以进行数据通讯了;

还有另外一种数据通讯的组织结构,称为 XMLXML 有自己的一套规则,看起来与 HTML 类似;

JSONXML 之间有什么不同呢?

其实,XML是另一种通用的 “语言” 而已,只不过语法不同罢了。有朝一日,我大中华的汉语成为了世界通用语言,英语相当于JSON,汉语就相当于XML;

关于 JSONXML 格式的不同,来看两个图:

JSON语法

该图中,JSON语法有3层次的缩进,每个项目的子项目都要进行缩进一次;等价的 XML语法表示如下:

XML语法

XML 看起来没有 JSON 简单明了。

参考

What is JSON

完!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容