JSON是什么?有哪些优点?JSON和XML的区别?
有一种叫做json (javascript object notation) 的轻量级数据交换格式能够替代xml的工作。它就是json。各语言对json支持的特别好,自从ajax的流行,json格式传输就更流行了。
一、json是什么?
有一种叫做json (javascript object notation) 的轻量级数据交换格式能够替代xml的工作。它就是json。
数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小。
易于解析这种语言, 客户端javascript可以简单的通过eval()进行json数据的读取。
包括actionscript, c, c#, coldfusion,java,javascript,perl,php,python,ruby等语言服务器端语言, 便于服务器端的解析。
各语言对json支持的特别好,自从ajax的流行,json格式传输就更流行了。
二、如果到这里你还不明白?json是什么,那么我就发大招了!
其实我在为公司面试的时候,我经常有提到,假如我不知道json是个什么玩意?你怎么告诉我,让我知道是个什么东西。(下面都是我的个人理解,因理解因人而异,受用即可!)
问了这么多人,其实结果不是我想要的,大多数的答案有这些。
它是前端和后台交互用的。
它是键值对的。
以上2点比较多。还有一些乱七八糟的完全偏离了json。
那么它应该是怎样的?应该这么回答,个人认为!
首先,它只是一个字符串,它只是一个有规则的字符串。(重点)
然后它的表达(表现)形式是键值对的。其实非常类似java语言里的map,objective-c里的字典,其他语言都有对应的,我说实话其他语言我不知道!我为什么用mapstring泛型,因为理论上它的键值对应该都是字符串,why?这个问题问的好,我可以这么回答你,因为它本身就是字符串。
上面说的理论上表达方式,那么实际目前我们用到的键值对支持什么呢?可以支持string、number、array以及boolean、null什么的。
它的作用是用来交互的,不一定web项目的前后端交互也可以接口,配置文件,文件存储等等都ok。目前移动端比较火,一般的项目都会用json来传输。
三、它能带来什么?
简洁、简单、体积小等。
上手容易,高效。
跨语言,目前移动端android、ios一般项目构造都是其他语言提供接口(json方式),移动端读取接口的方式开发。
….
xml的优缺点
<1>.xml的优点
a.格式统一,符合标准;
b.容易与其他系统进行远程交互,数据共享比较方便。
<2>.xml的缺点
a.xml文件庞大,文件格式复杂,传输占带宽;
b.服务器端和客户端都需要花费大量代码来解析xml,导致服务器端和客户端代码变得异常复杂且不易维护;
c.客户端不同浏览器之间解析xml的方式不一致,需要重复编写很多代码;
d.服务器端和客户端解析xml花费较多的资源和时间。
json的优缺点
<1>.json的优点:
a.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
b.易于解析,客户端javascript可以简单的通过eval()进行json数据的读取;
c.支持多种语言,包括actionscript, c, c#, coldfusion, java, javascript, perl, php, python, ruby等服务器端语言,便于服务器端的解析;
d.在php世界,已经有php-json和json-php出现了,偏于php序列化后的程序直接调用,php服务器端的对象、数组等能直接生成json格式,便于客户端的访问提取;
e.因为json格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.json的缺点a.没有xml格式这么推广的深入人心和喜用广泛,没有xml那么通用性;
json格式目前在web service中推广还属于初级阶段。
四、它和xml对比?
可读性:看了网上的各种帖子,有说可读性相当,不过基本是说xml可读性好,我认为还凑合。可以打平手。
可扩展性:有人说,“xml天生有很好的扩展性,json当然也有,没有什么是xml能扩展,json不能的。不过 json在javascript主场作战,可以存储javascript复合对象,有着xml不可比拟的优势”。我赞同一半,我觉得这些帖子都是老帖子,xml可以灵活扩展是因为各种语言有支持的其他jar包,类库等。但自从json火起来后,json的支持包,类库等,相信每个语言都很多。像java就有jackson、goson、json-lib、fastjson等等多的去了。
编码难度:xml有有dom,sax,stax等解析技术,json也有我上面说的那些,都ok。
解码难度:同上。
解码编码效率:呵呵!解析xml有专用cpu、你造吗?
下面给一个demo
xml demo
<?xml version="1.0" encoding="utf-8"?> <country> <name>中国</name> <province> <name>黑龙江</name> <citys> <city>哈尔滨</city> <city>大庆</city> </citys> </province> <province> <name>广东</name> <citys> <city>广州</city> <city>深圳</city> <city>珠海</city> </citys> </province> <province> <name>*</name> <citys> <city>台北</city> <city>*</city> </citys> </province> <province> <name>*</name> <citys> <city>乌鲁木齐</city> </citys> </province> </country>
json demo
{ "name": "中国", "province": [ { "name": "黑龙江", "citys": { "city": [ "哈尔滨", "大庆" ] } }, { "name": "广东", "citys": { "city": [ "广州", "深圳", "珠海" ] } }, { "name": "*", "citys": { "city": [ "台北", "*" ] } }, { "name": "*", "citys": { "city": [ "乌鲁木齐" ] } } ] }
java常用的json库
我们在日常开发中少不了和json数据打交道,那么我们来看看java中常用的json解析方式。
1、json官方
2、gson
3、fastjson
4、jackson
总结
当项目没有你接手的时候,没有强行用xml的情况下,你就用json,没有其他额外强行规定的情况下,你就用json。
本人是在学习elasticsearch的时候开始强度的接触json,可以这么给你形容,如果elasticsearch返回的是一个xml,估计你要哭,elasticsearch也要哭,这么和你比较你懂了吗。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
生核桃与熟核桃的区别是什么?生核桃的功效和食用禁忌有哪些
-
历史上的包拯到底是什么样的 和电视剧演的有哪些区别
-
鱼肚和鱼胶有什么区别?鱼肚的种类有哪些?鱼胶的功效是什么?吃鱼胶的禁忌是什么?关于鱼胶的菜品有哪些?
-
Python中json.load()和json.loads()有哪些区别
-
生核桃与熟核桃的区别是什么?生核桃的功效和食用禁忌有哪些
-
JSON是什么?有哪些优点?JSON和XML的区别?
-
CGI和servlet运行方式本质的区别是什么?PHP和Java在Web开发的原理有哪些本质不同?
-
docker究竟是什么 为什么这么流行 它的优点和缺陷有哪些?
-
docker究竟是什么 为什么这么流行 它的优点和缺陷有哪些?
-
历史上的包拯到底是什么样的 和电视剧演的有哪些区别