文章目录
诞生于JavaScript,json的前世今生
json含义
json诞生
搞清json兄弟姐妹,看清区别
json VS xml
小小翻译官,json的应用
前端ajax+json异步传输:
跨平台webservice:
非关系数据库存储(Nosql)
拒绝四不像,json语法有要求
json语法规则
json名称/值
json对象
json数组
JavaScript对象 VS json对象 VS json字符串
小结
谷歌Gson,精简而强大
序列化/反序列化介绍
Gson介绍
Gson实战
飞人fastjson,阿里的"黑科技"
fastjson介绍
fastjson实战
备受开源认可,Jackson亦是真王者
Jackson介绍
jackson实战
Gson VS fastjson VS jackson
小试牛刀
本文总结
声明
本文原创作者bigsai(同公众号),本文以浅显易懂的方式给大家讲解自己所认知的json,如果有错误或者不准确地方还请大家给出指正,另外本文以关卡课程的方式在博学谷也是免费开放的,大家也可通过关卡方式学习。链接地址。
诞生于JavaScript,json的前世今生
json含义
在开始之前,问个问题,什么是json?
a:我猜它应该是某一门高深的技术(语重心长)
b:json这个词为啥谷歌翻译?是啥新词语嘛?是不是搞错了哟?(底气十足)
c:json这个我听过,我只知道他是一种很轻量存储结构,但具体真的不太懂(轻声)
json它不是一个原有单词,其实是4个单词JavaScript Object Notation(JavaScript对象表示)的简写,是一种轻量级的文本数据交换格式,并且json独立于语言(使用JavaScript语法描述对象),很多编程语言都支持json。 json 已成为当前服务器与 web 应用之间数据传输的公认标准。
json诞生
问个问题,json是如何诞生的呢?
这个问题首先由于互联网应用之间需要传输数据,且很多跨平台的程序需要交互,只能采取纯文本方式的交互,而xml当初就是一个选择,但是xml规范越来越多也越来越复杂,解析效率也比较低,很多攻城狮看到xml头都大了,可能搞了很久也搞不明白。
然后独钟于JavaScript的JavaScript大宗师(JavaScript之父评价)Douglas Crockford根据JavaScript的规范发明推广了json,json格式简单易用,且同样可跨平台传出,得到广泛的认可和传播。就这样,json就越来越流行了,现在已经成为主流技术之一。
(选择题)章节练习:json是一种什么东西呢(B)?
A.JavaScript对象
B.轻量级文本数据交换格式
C.一种语言
D.一种框架
搞清json兄弟姐妹,看清区别
json VS xml
谈起json,那xml肯定是少不了对比的东西啊,没有对比就是没有伤害,在和json履行相同职责的文本传输交换格式还有json的老大哥xml(可扩展标记语言),在json横空出世以前,咱们用的可都是xml进行文件数据传输。
首先咱们要从定义上来看看json和xml的区别:
JSON(JavaScript Object Notation)
一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。其语言习惯具备类c的习惯体系(c,c++,java等)。
XML(Extensiable Markup Language,可扩展标记语言)
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
json的横空出世,是充分吸取借鉴了xml的优点,故json和xml有着一些相同的优点:
可读性好,结构清晰
分层存储(层次嵌套)
都可作为Ajax传输数据
都跨平台,可作为数据传输格式
但json毕竟青出于蓝而青于蓝,肯定有着xml一些没有的特点和优势,例如:
数据格式简单,易读易写,且数据都是压缩的,文件较小,便于传输。
json解析难度较低,而xml需要循环遍历DOM进行解析,效率较低。
服务端和客户端可以直接使用json,便于维护。而不同客户端解析xml可能使用不同方法。
json 已成为当前服务器与 web 应用之间数据传输的公认标准。
尽管如此,xml仍有它独有应用领域:
xml格式较为严谨,可读性更强,更易于拓展,可以良好的做配置文件。
出现较早,在各个领域有广泛的应用,具有普遍的流行性。
当然,不是所有的json都是"特仑苏",适合场景需要的才是最好的。但在web领域的数据传输,它就是王者!
(选择题)小练习:下列哪一项是错误选项?(B)
A.相同内容文件json通常要比xml更简洁更小。
B.json解析起来比xml复杂很多。
C.json和xml都是一种跨平台文本传输格式。
D.json是JavaScript Object Notation单词的简写。
小小翻译官,json的应用
json之所以很流行,是因为json有着广泛的应用领域。主要包括与ajax结合使用的统一平台的前端传输;跨平台的数据传输;非关系型数据库的文档存储等。这些领域通过使用json使得应用效率大大提高。
前端ajax+json异步传输:
json本身就起源于JavaScript,JavaScript解析处理json有天然的优势,而在Ajax异步加载的数据中,整体页面已经加载过了,我们只需要在对应位置渲染真实的数据就行了,。而这部分的真实数据我们用json文本来存储,使用JavaScript异步向服务端请求,请求成功之后JavaScript对其渲染填充就可以了。下图就是对前后端交互传统方式和ajax异步交互的简要描述:
如果对AJAX也不熟悉?流程也看不懂,也不能明白异步传输的真谛在哪里,那好咱们以下图这个例子来解释一下,对于一个非常庞大的网页部分,可以有各个模块组成,其中评论模块是我们非常小的模块,但是评论可能涉及很多条可能涉及分页,如果我们每次为了看下一页的评论,点击下一页就向服务端请求整个页面资源进行刷新,那样就太浪费服务端资源和带宽了(就评论的文本变了,就要把其他模块全部渲染一遍?)
所以我们采取所谓AJAX异步更新这个东西,也就是通过JavaScript请求下一页的评论相关数据(用json作为数据交互文本),JavaScript得到这串json字符串中就有页面需要的评论信息,然后我们强大到无所不能的JavaScript将这部分重现渲染到评论模块的对应位置。
这个流程下来,我们不仅节约了带宽,提高了响应速度,还提高了服务器相对负载能力(每次请求需要的资源更少),提高了用户的使用体验,还提高了------(此处省略万字)
跨平台webservice:
前面提到的是前后端的交互,前提是后端同是一门编程语言、平台,向前端提供服务。但随着互联网的发展,很多时候会遇到服务拆分、跨平台等服务的需要。而跨语言跨平台的最大障碍就是服务的交流问题。你总不至于用你电脑上的c++代码直接调用我电脑上某个java函数吧?为了解决这种问题,这时候通过restful风格的接口和json作为文本传输的格式就能良好的解决服务通信问题。
例如某个公司业务太大,将服务分配给A团队和B团队。很多时候A可能需要进行调用B服务。如果A团队全部是java,B团队全部是php,互相喊着天下第一不肯相让。这该怎么办?那么通过json进行通信是一种非常好的方式。流程如图简要所示:
————————————————
版权声明:本文为CSDN博主「Big sai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40693171/article/details/106451198