json
英文全称JavaScript Object Notation
,json
是存储和传输数据的格式用于服务器端向网页传递数据,json
格式仅仅是一个文本,文本可以被任何编程语言读取及作为数据格式传递.
JSON语法规则
- 映射用冒号(‘:’)
"firstName": "John"
- 并列数据之间由逗号(‘,’)分隔
"firstName": "John","lastName": "Doe"
- 映射的集合(对象)用大括号
{"firstName": "John","lastName": "Doe"}
- 并列数据集合(数组)用方括号(‘[]’)
"employees":[{"firstName":"John", "lastName":"Doe"}]
- 属性名必须用双引号包裹,最后一个属性末尾不能有逗号
*
1 | var arr={"employees":[ |
注: 并列的数据之间要用逗号隔开,最后一个”名/值”之后不能加逗号,英文,中文要用双引号括起来 不能使用单引号,也不能没有
JSON的优点
- 数据格式比较简单,易于读写,格式都是压缩的,占用带宽小
- 支持多种语言,包括
C,C#,C++,JAVA,Javascript,Perl,python,PHP
等服务器端的语言,便于服务器端的解析 - 传输速度特别快
常见的四种数据格式
XML
标准的通用标记语言JSON
存储和传输数据的格式Serialize
将变量序列化,返回有变量类型和结构的字符串Array()
基本数据类型 不能用于数据的传输和交替JSON
和Serialize
的区别
相同点
- 都是把其他数据类型转换成一个可以传输的字符串
- 都是结构性数据
- 资源类型都不可以转换为
JSON
或Serialize
不同点
Serialize
序列化后的数据格式 保存数据原有类型JSON
数据格式比Serialize
序列化之后的数据更简单
适用场景
JSON
适合数据量大,不要求保留原有数据类型下使用Serialize
适合存储带有加密方式的数据,防止数据被中途截取
JSON数据遍历
Json
遍历使用for in
(不能使用for循环),json
是没有长度的,json.length
会得到undefined
1
2
3
4
5
6
7
8
9var json1 = {
'url':['img/1.jpg','img/2.jpg','img/3.jpg','img/4.jpg'],
'text':['这是第一张图片','这是第二张图片','这是第三张图片','这是第四张图片']
}
for(var attr in json1){
for(var i=0;i<json1[attr].length;i++){
console.log(json1[attr][i])
}
}
在PHP中常用的JSON函数
Json_encode()
将数组,对象转换成JSON
格式 (对象只能转换公有属性),只能接收utf8
编码格式,其他格式则返回false
或null
Json_decode()
将JSON
字符串转换成对象Json_decode($obj,true)
将JSON
字符串转换成数组
在JS中常用的JSON函数
$.getJSON()
获得JSON
数据eval()
解析json
格式字符串为json
对象 不安全eval()
函数的参数是一个字符串,作用是直接执行其中的JavaScript
代码。在低版本的浏览器不得不使用这种方式eval()
的参数,在字符串两旁加了括号,这是必须的,否则会报错。使其变成表达式JSON.parse()
解析json
格式字符串为json
对象 (IE8以下不兼容)(对象)
可以有第二个参数,是一个函数。此函数有两个参数:name 和 value,分别代表名称和值JSON.stringify()
将对象(json
对象或数组)转换成json
字符串
可以有三个参数 第三个表示格式化输出JSON.stringify(myObject,null,4)