当前位置: 首页 > 后端技术 > Python

JSON——IT技术人员必须了解的数据交换格式

时间:2023-03-26 11:03:01 Python

JSON作为目前Web上主流的数据交换格式,是每个IT技术人员都必须了解的数据交换格式。尤其是在Ajax和REST技术流行的今天,JSON无疑成为了数据交换格式的首选!今天就和猪哥一起学习JSON吧!1.XML在讲JSON之前,我觉得有必要给大家介绍一下XML(ExtensibleMarkupLanguage),因为JSON正在慢慢取代XML。一、XML的由来在Web开发和加载数据的早期,数据量不是很大,所以基本上可以用HTML来解决(1989年诞生)。但是,随着Web应用的不断增长,HTML的一些缺点也逐渐显现出来,如:可读性差、解析时间长、数据描述性差等。1998年2月10日,W3C(WorldWideVIiebConsortium,万维网联盟)公布了XML1.0标准,XML由此诞生。XML使用简单灵活的标准格式为基于Web的应用程序提供描述数据和交换数据的有效方法。但是,XML无意取代HTML。HTML着重于描述如何在浏览器中显示文件,它着重于描述如何以结构化的方式表示数据。XML简单易行,在任何应用程序中都易于读取/写入数据,这使得XML迅速成为数据交换的唯一通用语言,因此XML得到了广泛的应用。注意:XML是一种数据交换格式,而不是一种编程语言。而且他是一种跨语言的数据格式,目前大多数编程语言都支持XML。2.如何使用XML实例XML?它是什么样的?举个简单的例子吧!A公司要对接B公司(A公司需要获取B公司的用户基本信息),B公司提供一个接口供A公司调用,A公司和B公司的开发人员会提前沟通这个接口:URL,参数传递,返回数据,异常等等。但是可能两家公司使用的技术栈不一样,所以支持的数据格式也可能不一样。为了解决技术栈不同导致的数据格式不同的问题,A公司和B公司的开发和谈判采用了通用的数据格式进行传输,于是想到了XML。假设A公司现在需要名为pig的用户信息,那么A公司调用B公司的接口,传入参数name=pig。然后B公司接口收到请求后,从数据库中取出用户信息,封装成如下XML格式,返回给A公司。最后A公司收到返回后,可以使用XML库解析数据pig18江西省福州崇仁县3.XML的十字路口虽然XML标准本身很简单,但是与XML相关的标准种类很多。W3C制定的相关标准有20余项,XML制定的重要电子商务标准有十余项。这给软件开发工程师带来了极大的困扰!随着AJax(以前叫XMLHTTP,2005年后叫Ajax)技术的流行,XML的缺点越来越明显:大家都知道XML的实现是基于DOM树的,DOM在各种浏览器中的实现细节不同,所以XML的跨浏览器兼容性不好,所以迫切需要一种新的数据负载格式集成到HTML页面中,以满足Ajax的要求!2.JSON前面我们说过,随着Ajax的普及,各种浏览器对DOM的实现细节不尽相同,所以会出现兼容性问题,这对于前端开发的同学来说真是灾难。因为一个功能可能需要用代码来兼容各种浏览器和调试,工作量巨大。1、JSON的诞生如何将数据整合到HTML中,解决浏览器兼容性问题?答案是:利用所有主流浏览器中的通用组件——JavaScript引擎。这样,你只需要创建一个JavaScript引擎可以识别的数据格式!2001年4月,发送了第一条JSON格式的消息。这条消息是从旧金山湾区车库中的一台计算机发出的,它标志着计算历史上的一个重要时刻。DouglasCrockford和ChipMorningstar是一家名为StateSoftware的技术咨询公司(后来都在雅虎)的联合创始人,他们聚集在Morningstar的车库里测试一个想法,并发送了这条消息。document.domain='fudco';parent.session.receive({to:"session",do:"test",text:"Helloworld"})熟悉js的同学也很惊讶,第一条JSON消息明明是JavaScript!事实上,克罗克福德本人曾表示,他并不是第一个这样做的人。早在1996年,Netscape的某人就使用JavaScript数组文字来交换信息。由于消息只是JavaScript,因此不需要任何特殊的解析工作,JavaScript解释器可以完成所有工作。原始JSON消息实际上与JavaScript解释器发生了冲突。JavaScript保留了大量关键字(ECMAScript6版本有64个保留字),而Crockford和Morningstar在他们的JSON中无意中使用了一个保留字:do。因为JavaScript使用了太多的保留字,Crockford决定要求所有JSON键名都被引用,因为它们的使用是不可避免的。带引号的键被JavaScript解释器识别为字符串。这就是今天JSON键名用引号引起来的原因。由于这种数据格式可以被JavaScript引擎识别,解决了XML带来的各种浏览器兼容性问题,所以这项技术得以推广,所以Crockford和Morningstar想将其命名为“JSML”,意为JavaScript标记语言(JavaScriptMarkupLanguage),但发现这个缩写已经被一种叫做JavaSpeechMarkupLanguage的东西使用了。于是他们决定采用“JavaScriptObjectNotation”,缩写为JSON,JSON正式诞生了。2.JSON发展2005年,JSON大爆发。那一年,一位名叫杰西·詹姆斯·加勒特(JesseJamesGarrett)的网页设计师和开发人员在一篇博文中创造了术语“AJAX”。他小心翼翼地强调AJAX不是一项新技术,而是“以某种强大的新方式将几种蓬勃发展的技术结合在一起”。AJAX是Garrett为这类不断增长的Web应用程序开发的新方法的名称。他的博文接着描述了开发人员如何利用JavaScript和XMLHttpRequest来构建比传统网页更具响应性和状态性的新型应用程序。他还以已经使用AJAX技术的Gmail和Flickr网站为例。当然,“AJAX”中的“X”代表的是XML。但在随后的问答帖中,Garrett指出JSON可以完全替代XML。“虽然XML是AJAX客户端最完善的数据输入和输出技术,但可以使用JavaScript对象表示法(JSON)或任何类似的结构化数据方法来实现相同的效果,”他写道。这时,JSON逐渐在国外的博客圈和技术圈流行起来!2006年,DaveWiner是一位多产的博客作者和许多基于XML的技术(如RSS和XML-RPC)的开发人员,他抱怨说JSON无疑是在重新发明XML。Crockford阅读了Winer的文章并发表了评论。为了回应JSON重新发明XML的指责,Crockford写道:“重新发明轮子的好处是获得更好的轮子”。3、今天的JSON地位今天的JSON已经占据了整个世界。绝大多数应用程序在通过Internet相互通信时都使用JSON。它已被所有大型企业采用:在最受欢迎的10个WebAPI接口列表中(主要由Google、Facebook和Twitter提供),只有一个API接口以XML格式公开数据。JSON在程序编码层面和文件存储方面也被广泛采用:在StackOverflow上,关于JSON的问题越来越多。下图是StackOverflow上不同数据交换格式的题目数量和时间的图表。从上图我们可以看到StackOverflow上关于JSON的问题越来越多,也能反映出JSON越来越受欢迎!更详细的创建JSON的故事可以看:https://www.jianshu.com/p/62a...4.JSON的例子还是以上面A公司和B公司的业务连接为例。双方开发者商定了一个通用的数据交换格式,现在有两种流行的数据格式,XML和JSON,所以开发者以JSON形式显示用户信息,然后比较两种数据格式:{"person":{"name":"猪","年龄":"18","性别":"男","家乡":{"省":"江西省","市":"福州市","县":"崇仁County"}}}开发者对比了XML和JSON的数据格式后,发现JSON具有更好的可读性和简洁性,同样的数据负载,JSON的字符更少,所以双方开发者一致同意使用JSON作为接口数据格式!而且还有一个很重要的一点,写XML的时候,第一行需要定义XML的版本,但是JSON不存在版本问题,格式永远不会变!三、小结由于篇幅原因,今天我们只了解了JSON的诞生和渊源。我们知道JSON的诞生是因为XML不能满足Ajax对浏览器的兼容性,所以有人想创建一个通用的浏览器组件:JavaScript引擎可以识别的数据格式,从而解决浏览器不兼容的问题,所以一个子集是提取出来的Js数据格式,命名为JSON!我们也知道为什么JSON键需要用双引号括起来。是因为JS中有很多关键字和保留关键字。为了避免与JS关键字冲突,Crockford要求所有的键名都用双引号引起来。引号,让JS引擎识别为字符串,避免与JS中的关键字冲突!下一期我们将详细介绍JSON数据结构,JSON序列化,以及JSON在Python中的使用。了解技术诞生和发展背后的故事同样重要,因为这些都可以作为你吹牛的资本!参考资料:百度百科:XMLDanielRubio:JSON入门https://www.jianshu.com/p/62a...本文由多帖博客平台OpenWrite发布!