1.JSON是什么?
有一种叫做JSON (JavaScript Object Notation)的轻量级数据交换格式能够替代XML的工,它就是JSON。
数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小,易于解析这种语言。
客户端JavaScript可以简单的通过eval()
进行JSON数据的读取,包括
ActionScript, C, C#, ColdFusion,Java,JavaScript,Perl,PHP,Python,Ruby
等语言服务器端语言, 便于服务器端的解析。
各语言对JSON支持的特别好,自从Ajax的流行,JSON格式传输就更流行了。
JSON常被用作序列化。
2.对JSON的理解
如果到这里你还不明白?
JSON是什么,那么我就发大招了!
其实我在为公司面试的时候,我经常有提到,假如我不知道JSON是个什么玩意?你怎么告诉我,让我知道是个什么东西。
PS:下面都是我的个人理解,因理解因人而异,受用即可!
问了这么多人,其实结果不是我想要的,大多数的答案有这些。
它是前端和后台交互用的
它是键值对的
以上2点比较多。
还有一些乱七八糟的完全偏离了JSON。那么它应该是怎样的?
应该这么回答,个人认为!
首先,它只是一个字符串,它只是一个有规则的字符串。(重点)
然后它的表达(表现)形式是键值对的。其实非常类似Java语言里的Map,Objective-C里的字典。
它本身就是字符串。键值对支持什么呢?可以支持String、Number、Array以及Boolean、null什么的。
它的作用是用来交互的,不一定Web项目的前后端交互也可以接口,配置文件,文件存储等等都OK。目前移动端比较火,一般的项目都会用JSON来传输。
3.JSON能带来什么?
-
简洁、简单、体积小
-
上手容易,高效
-
跨语言,目前移动端Android、IOS一般项目构造都是其他语言提供接口(JSON方式),移动端读取接口的方式开发
-
….
4.JSON和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、你造吗?
5.DEMO对比
XML Demo
<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": [
"乌鲁木齐"
]
}
}
]
}
网友评论