1.什么是JSON
JSON全称对象表示法,是一种数据格式。它本身是一串字符串,只是它有固定格式的字符串,符合这个数据格式要求的字符串,我们称之为JSON。
用来代替XML做数据交换
2.JSON语法
语法规则
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
{"key":value"}
==>key=value
因为是字符串所以用双引号 - 方括号保存数组
键值对
JSON 数据的书写格式是:{Key:Value}
、{Key:Array}
。
注意:如果是字符串则需要用引号
例如:{"name" : "晋二"}
等价于js语句的name="晋二"
JSON数据结构中的value的取值:
string(双引号中)、number、object(花括号中)、array(方括号中)、boolean(true/false),null
{
"type1": "string",
"type2": 31,
"type3": {"name":"晋二"},
"type4": ["张三","李四"],
"type5": true,
"type6": null,
}
JSON对象
JSON 对象在花括号中,对象可以包含多个名称/值对
{
"name": "晋二",
"age": 18,
"gender":"女"
}
等价于JavaScript的这条语句
name="晋二",
age=18,
gender="女"
JSON数组
JSON数组在方括号("[]")中书写,数组可包含多个对象,如下“student”描述
{
"student": [
{
"name": "张三",
"age": 15
},
{
"name": "李四",
"age": 16
},
{
"name": "王五",
"age": 17
}
]
}
JSON 文件说明
JSON 文件的文件后缀是 “.json”
JSON 文本的 MIME 类型是 “application/json”
3.对象字符串转换
JSON.parse()
JSON.parse()可以把JSON规则的字符串转换为JSON对象
语法:
JSON.parse(text[, reviver])
//text:需要被转换的字符串。
//[, reviver] : 可选参数,可以是一个回调方法。
返回值是一个JSON对象
案例:'{"name":"张三","age":12,"gender":"男"}'
例如我们得到了的如上数据,用引号包裹起来,说明是一个字符串,就可以通过JSON.parse()转换成JSON对象
var json=JSON.parse('{"name":"张三","age":12,"gender":"男"}');
console.log(json);
运行结果:{ name: '张三', age: 12, gender: '男' }
JSON.stringify()
可以把JSON对象转化为 JSON 规则的字符串
语法:
JSON.stringify(value[, replacer[, space]])
参数 | 参数说明 | 备注 |
value | 将要序列化成 一个JSON 字符串的值 | 必选 |
replacer | 如果是一个function,那么每个序列化成JSON的value都会经过这个function,如果是一个Array,那么序列化后的JSON字符串中的Key在这个数组中才会加入到返回的JSON 字符串中去 | 可选 |
space | 用于美化JSON字符串,如果是一个Number类型,代表的就是多少个空格。如果是0或者小于0,那么就是没有空格(和不填此项没有区别),如果是字符串,那么直接填充。 | 可选 |
案例:{ name: '李四', age: 15, gender: '男' }
将这个普通对象转为json字符串,就可以使用JSON.stringify()
var json=JSON.stringify({ name: '李四', age: 15, gender: '男' });
console.log(json);
运行结果:{"name":"李四","age":15,"gender":"男"}
4.ajax与JSON
Ajax与JSON是密不可分的,因为目前大部分Ajax请求都采用JSON来完成前后端之间的数据交互。
一般在ajax里请求等到的结果就是json