总结json
来源:互联网 发布:淘宝如何认证大v 编辑:程序博客网 时间:2024/06/06 11:02
1.JSON语法规则:
a.对象表示为键值对
b.数据由逗号分隔
c.花括号保存对象
d.方括号保存数组
2.JSON键值对
JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:
1
{"firstName": "John"}
3.JSON与JS对象的关系
很多人搞不清楚 JSON 和 Js 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
如
1
var
obj = {a:
'Hello'
, b:
'World'
};
//这是一个对象,注意键名也是可以使用引号包裹的
1
var
json =
'{"a": "Hello", "b": "World"}'
;
//这是一个 JSON 字符串,本质是一个字符串
要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
1
var
json = JSON.stringify({a:
'Hello'
, b:
'World'
});
//结果是 '{"a": "Hello", "b": "World"}'
要实现从 JSON 转换为对象,使用 JSON.parse() 方法:
1
var
obj = JSON.parse(
'{"a": "Hello", "b": "World"}'
);
//结果是 {a: 'Hello', b: 'World'}
5.和XML相比
可读性
JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。
可扩展性
XML天生有很好的扩展性,JSON当然也有,没有什么是XML可以扩展而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。
编码难度
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。
解码难度
XML的解析方式有两种:
一是通过文档模型解析,也就是通过父标签索引出一组标记。例如:xmlData.getElementsByTagName("tagName"),但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。
另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。
凡是这样可扩展的结构数据解析起来一定都很困难。
JSON也同样如此。如果预先知道JSON结构的情况下,使用JSON进行数据传递简直是太美妙了,可以写出很实用美观可读性强的代码。如果你是纯粹的前台开发人员,一定会非常喜欢JSON。但是如果你是一个应用开发人员,就不是那么喜欢了,毕竟xml才是真正的结构化标记语言,用于进行数据传递。
而如果不知道JSON的结构而去解析JSON的话,那简直是噩梦。费时费力不说,代码也会变得冗余拖沓,得到的结果也不尽人意。但是这样也不影响众多前台开发人员选择JSON。因为json.js中的toJSONString()就可以看到JSON的字符串结构。当然不是使用这个字符串,这样仍旧是噩梦。常用JSON的人看到这个字符串之后,就对JSON的结构很明了了,就更容易的操作JSON。
以上是在Javascript中仅对于数据传递的xml与JSON的解析。在Javascript地盘内,JSON毕竟是主场作战,其优势当然要远远优越于xml。如果JSON中存储Javascript复合对象,而且不知道其结构的话,我相信很多程序员也一样是哭着解析JSON的。
除了上述之外,JSON和XML还有另外一个很大的区别在于有效数据率。JSON作为数据包格式传输的时候具有更高的效率,这是因为JSON不像XML那样需要有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输压力[2] 。
实例比较
XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。
用XML表示中国部分省市数据如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
country
>
<
name
>中国</
name
>
<
province
>
<
name
>黑龙江</
name
>
<
cities
>
<
city
>哈尔滨</
city
>
<
city
>大庆</
city
>
</
cities
>
</
province
>
<
province
>
<
name
>广东</
name
>
<
cities
>
<
city
>广州</
city
>
<
city
>深圳</
city
>
<
city
>珠海</
city
>
</
cities
>
</
province
>
<
province
>
<
name
>台湾</
name
>
<
cities
>
<
city
>台北</
city
>
<
city
>高雄</
city
>
</
cities
>
</
province
>
<
province
>
<
name
>新疆</
name
>
<
cities
>
<
city
>乌鲁木齐</
city
>
</
cities
>
</
province
>
</
country
>
用JSON表示如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"name": "中国",
"province": [{
"name": "黑龙江",
"cities": {
"city": ["哈尔滨", "大庆"]
}
}, {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}, {
"name": "台湾",
"cities": {
"city": ["台北", "高雄"]
}
}, {
"name": "新疆",
"cities": {
"city": ["乌鲁木齐"]
}
}]
}
可以看到,JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用得带宽。
阅读全文
0 0
- json总结
- json总结
- JSON总结
- JSON总结
- json 总结
- json总结
- JSON 总结
- json总结
- json 总结
- json总结
- json总结
- json总结
- JSON总结
- JSON总结
- JSON总结
- JSON总结
- json总结
- 总结json
- 利用JS脚本通过getAttribute()和setAttribute()等对CSS样式进行操作
- Android组件RecyclerView添加分割线
- 利用HTML5的canvas制作万花筒动画特效
- JS中数组对象去重
- jQuery对象与JS原生dom对象之间的转换
- 总结json
- JS中的事件冒泡(Bubble)和事件捕获(capture)以及如何阻止事件的冒泡
- jquery中的$(document).ready()、JavaScript中的window.onload()以及body中的onload()、DomContentLoaded()区别
- CSS 中的内联元素、块级元素以及display的各个属性的特点
- request.querystring和request.form、session的区别
- Jquery中的队列函数quene()、dequene()、clearQuene()
- python re函数的常用方法
- js中eval() 方法的使用以及一些特殊的使用方式
- _ConnectionPtr、_RecordsetPtr和_CommandPtr