对json类型的理解

第一篇博客:

最近一直在从事前端方向的工作,在前端向后台服务器传送数据的时候都使用的是json的数据格式进行传值,但是说到具体的json数据格式是一个什么东西,也不是很理解,今天去查阅了些资料,记录一下。

都说了解一个东西,得先去了解他的敌人和历史,为此我也去了解了些关于xml和web相关的东西,整理记录一下,可能废话比较多,有些知识点也不一定准确,但是大方向肯定是没错的。

1、互联网的起源

1968年,当时还在美苏冷战时期,当时的美国只有一个军事指挥中心,他们就想,万一苏联来把自己的这个中心炸了,那岂不就完犊子了,所以当时国会就批准了大批的资金给美国国防部高级研究计划局,让他们组建了一个名为ARPANET(英文 Advanced Research Projects Agency Network 的缩写,又称“阿帕”网)的计算机网,在1969年,“阿帕”网第一期在四个大学间通讯完成,这大致就是互联网的萌芽。 

一个好的东西出来,必然引领一个时代,各个国家都是有很多高端人才的,当时美国研发出互联网络的通信以后,各国之间涌现出了大批的新的网络。直到1983年,美国将“阿帕”网一分为二,一份用作军用,一份用作民用,并把用作民用的改名为互联网。但是当时全球已经有了众多的互联网成果,我估计这时,就是各国什么大佬们相互商讨比拼,最后“阿帕”网凭借他的TCP/IP协议力压群雄,成为我们至今任然在遵循的网络传输控制协议。

2、web的起源

互联网的概念出来以后,我也不知道当时大家都拿来干嘛,网络世界基本一片空白,没有所谓的浏览器;直到1991年8月6日,这天一个叫做蒂姆·伯纳斯·李的人将万维网的项目简介帖在了alt.hypertext 新闻组,后来人们一把把这天当做万维网公用服务在网络上的首次亮相,其实我们直到今天所做的所有的开发工作,都是在实现一个万维网服务。(万维网 world wide web, 也就是我们通过WWW在浏览器上访问服务器的页面),再到1994年,当时的web已经发展的非常迅速了,蒂姆·伯纳斯·李就觉得的有一个规范,不然就容易乱套,所以他就组建了万维网联盟,简称W3C,这是一个类似基金会或委员会的机构来规范,为的是web的发展和制定规范,以达成全球统一标准,。后来W3C慢慢研发出CSS、HTML、XML等,这下我们的第二主题XML出现了。

3、XML是什么?

刚才说的是一个互联网和web的一个大致起源,现在来稍微讲一下XML的介绍,XML全名EXtensible Markup Language,翻译为可扩展标记语言。那么什么叫做标记呢?所谓标记就是一种记号,比如一片文章中你画的一个重点,你用红线标记出来,这就是标记,可扩展就是说可以自己来定义每一个标记,意思就是说XML是一种可以我们自由添加标签的数据格式。但是在我们引入的XML配置文件的时候,为什么要加入一些DTD呢,DTD又是什么呢? 既然XML是可以扩展的,也就是说每一个标签的含义其实是不明确的,而DTD就是用来给这些标签指明含义的,现在DTD基本被Schema取代,但是道理是一样的。那么现在又又一个问题,如果一个XML文件,我引入的两个DTD有相同名称的标签名怎么办,所以就出现了命名空间这种概念,在一个XML中,命名空间的定义都是:xmlns:a, 其中的a就是命名空间的别名,以后用这个命名空间的标签时,加上这个别名就能够区分了。

举个例子吧:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                          http://www.springframework.org/schema/beans/spring-beans.xsd

</beans>

上面的xmlns:xsi就是一个命名空间,最后的xsi:schemaLocation,是一个在xmlns:xsi里定义的别名标签,http://www.springframework.org/schema/beans表示 这个命名空间下的模板文件是

http://www.springframework.org/schema/beans/spring-beans.xsd

4、HTML的来历

其实上面已经有些偏题了,现在回归正题,在很久以前其实科学家研究者们就会把大家习惯做标示用的一些符号记录同一下来,而这个标记符号是没有任何其他意义的,他和自己写的内容是分割的,这样大家看到这个标记符号就知道后面是作者标记的什么意思,而不知道这个标记的也不会影响阅读,这其实就是最早的GML的概念。然后到了1978年,ANSI将GML加以整理规范,发布成为SGML,1986年起为 ISO 所采用(ISO 8879),并且被广泛地运用在各种大型的文件计划中。但是因为这个SGML定义的东西太细太复杂了(标准手册就有500多页),导致难以推广。

不好推广不行呀,各个研究者科学家们的文档资料要相互交流,而且当时的计算机互联网(1983)已经出现,只是当时是没有浏览器的说法的,大家会把文档保存在自己的计算机,但是Tim Berners-Lee他就发现大家电脑里的文档格式都不一样,这可不行,所以后来他就在SGML的基础上提炼出HTML的概念,用来在计算机上能够显示文档信息,最先的HTML规范是只有20多个标签的,其实这个时候Tim Berners-Lee应该也已经提出了浏览器和web的概念,大家就已经可以通过HTML的规范,在互联网上相互交流阅读文档了。网上说的饿HTML是在1993年6月作为互联网工程工作小组(IETF)工作草案发布(并非标准)的。

5、XML的来历

1993年,当时的人们已经有浏览器了,已经能够在互联网上相互分享文档资料,但是HTML显示的内容是由服务器提供的,而一个请求始终是要通过HTTP协议吧数据传递到服务器的,但是HTMl是不够灵活的,不同的服务器可能需要不同的数据结构,这时HTML就完全不能胜任,所以在1995年的万维网协会(W3C)就又在SGML的基础上,提出去一套简单的数据结构表现规范,就是XML.。所以XML的用途主要就是用来传送和携带数据的,HTML是用来展示数据的。当然因为他们其实也都是一些不同DTD的文档规范,XML也是能够展示页面的。

6、js登上历史舞台

HTML语言出现以后,其实在浏览器上已经能够正常的浏览文档信息,当时主流的浏览器主要是IE和网景公司的Navigator浏览器,1994年网景公司推出Navigator浏览器0.9,这是当时最成熟的一个浏览器版本,但是他并不支持与访问者的互动,就比如输入一个表单的信息,浏览器并不能检验该表单是否填写完整,必须把这个数据发送到后来由服务器进行校验,这在当时的带宽很小的情况下是完全不能容忍的,所以网景公司召集全员开会,当时有两种选择:一个是采用现有的语言,比如Perl、Python、Tcl、Scheme等等,允许它们直接嵌入网页;另一个是发明一种全新的语言;就在网景公司举棋不定的时候,Sun公司宣布了一件大事,1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。而偏偏网景公司的高层也都是Java的信徒,一致决定研发一种新的语言,并且决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。1995年4月,网景公司录用了一个34岁的小伙Brendan Eich,网景公司后来要求他开发一种网页脚本语言,也就是在浏览器能运行的语言,而且必须看上去与Java足够相似。所以Brendan Eich用十天开发了javaScript:

(1)借鉴C语言的基本语法;

(2)借鉴Java语言的数据类型和内存管理;

(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;

(4)借鉴Self语言,使用基于原型(prototype)的继承机制。

由此javaScript登上历史舞台。

7、json出现

json出现以前大家的web项目大多采用XML的数据格式来传递数据,但是XML的标签在生成和解析的时候都给开发人员带来困扰,为什么用xml呢?因为xml是一种与语言无关的纯文本的数据格式。所以在2002年的某一天,道格拉斯·克罗克福特(Douglas Crockford)同学为了拯救广大的开发人员,发明了json这种轻量级的数据交换格式,因为当时的道格拉斯·克罗克福特(Douglas Crockford)在雅虎上班,所以整个json被定义为一种javaScript的子集。json数据格式的类型也定义在了js的背景下:

- number:和JavaScript的number完全一致;

boolean:就是JavaScript的true或false;

- string:就是JavaScript的string;

- null:就是JavaScript的null;

- array:就是JavaScript的Array表示方式——[];

- object:就是JavaScript的{...}表示方式。

JSON还定死了字符集必须是UTF-8,表示多语言就没有问题了。为了统一解析,JSON的字符串规定必须用双引号”“,Object的键也必须用双引号”“。由于json的格式简单,而且当时的web开发,前端都是用的javaScript,所以json很快就风靡全球,被EMCA定义为标准。

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章