目录
一、JSON的定义
JSON是一种轻量级的数据交换格式,它基于JavaScript中的一个子集定义。JSON是JavaScript Object Notation的缩写,但它是语言无关的,这意味着JSON可以在任何编程语言中使用,不仅限于JavaScript。
二、JSON的特点
- 易于程序员阅读和编写。
 - 易于计算机解析和生成。
 - 其实是javascript的子集:原生javascript支持JSON
 
三、json和js对象的区别
JSON 对象是纯文本,不包含任何方法或函数。

JSON和JS对象的相互转换:
            
            
              html
              
              
            
          
              <script>
        //下面定义的是JS对象
        var student = {
            name:'zhang',
            age:23,
            print:function () {
                console.log(this.name + '的年龄是' + this.age + '岁');
            }
        }
        console.log(student.name);
        student.print();
        var s = JSON.stringify(student);
        console.log('JS转化为JSON:')
        console.log(s); //将js转化为json
        console.log(typeof (JSON.stringify(student)));
        console.log('JSON转化为JS:')
        var obj = JSON.parse(s); //将JSON转化为js对象
        console.log(obj);
        console.log(typeof (obj));
    </script>
        上面的代码输出如下:

四、JSON的作用
- 使用ajax进行前后台数据交换
 - 移动端与服务端的数据交换
 
五、JSON数据格式
JSON数据格式总结下来有两种:
1、对象格式:{"key1":obj1, "key2":obj2, "key3":obj3...} //key值一定要加引号
2、数组/集合格式: [obj1,obj2,obj3...]
注意:JSON的key是字符串,JSON的value是Object,不能是函数、undefined和NaN
六、JSON数据定义规则
1、映射用冒号(":")表示。名称:值
2、并列的数据之间用逗号(",")分隔。名称1:值1,名称2:值2
3、 映射的集合(对象)用大括号("{}")表示。{名称1:值1,名称2:值2}
4、并列数据的集合(数组)用方括号("[]")表示。如下:
{名称1:值,名称2:值2}, {名称1:值,名称2:值2}
5、 元素值可具有的类型:string, number, object, array, true, false, null
6、对象(Object)用大括号({})表示
Student:
{
"id" : 12,
"name" : "java1711",
"age" : 20,
"gender" : "男"
}
7、数组(Array)用方括号([])表示:
List: [{},{},{}]
{ "id" : 12, "name" : "java1711", "age" : 20, "gender" : "男" }, { "id" : 13, "name" : "java1712", "age" : 21, "gender" : "女" }
七、JSON和XML比较
JSON常备拿来与XML做比较,因为JSON的诞生本来就或多或少要有取代XML的意思。
相比XML,JSON的优势如下:
- 没有结束标签,长度更短,读写更快。
 - 能够直接被JavaScript解析器解析。
 - 可以使用数组。
 
同一个对象分别用JSON和XML定义如下:
(1)用JSON:
{
"id" : 12,
"name" : "gao",
"age" : 30,
"gender" : "男",
"interests" : ["篮球", "爬山", "旅游"]
}
(2)用XML:
            
            
              html
              
              
            
          
          <root>
    <id>12</id>
    <name>gao</name>
    <age>30</age>
    <gender>男</gender>
    <interest>篮球</interest>
    <interest>爬山</interest>
    <interest>旅游</interest>
</root>
        可以看出用定义比较简洁,而且JSON可以直接使用数组,但是XML没有直接定义数组,如果数组很长,我们的代码中就要添加大量的没有实际意义的开始和结束标签,这对于网络传输是不利的。现在的XML主要是用在配置文件。
八、简单总结一哈子
综上,JSON其实就是一种数据格式;
而且它和语言没有关系;
它还可以在网络中传输;
它最主要的任务就是进行数据交换:
- 使用ajax进行前后台数据交换
 - 移动端与服务端的数据交换
 
JSON定义是是采用键值对的形式,键值必须要用引号括起来,值不能是函数、undefined和NaN类型;
最后它最大的优点就是:简单明了易编写和阅读。
!!!!