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