JSON语法

JSON的语法可以表示以下三种类型的值

简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和Null。但是JSON不支持JavaScript中的特殊值undefined。

对象:对象做为一种复杂的数据类型,表示的是一组无序的键值对。每个键值对中的值可以是简单值,也可以是复杂数据类型的值。

数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值,数组的值也可以是任意类型——简单值、对象或数组。

JSON不支持变量、函数或对象实例,它就是一种表示结构化数据的格式,虽然与JavaScript中中表示数据的某些语法相同,但是它并不局限于JavaScript的范畴。

一、简单值

最简单的JSON数据形式就是简单值

这个值就是有效的JSON数据: 5

这是JSON表示数值 5 的方法。类似的,下面是JSON表示字符串的方式:

"Hello world!"

JavaScript字符串与JSON表示字符串最大的区别在于:

  • JSON字符串必须使用双引号(单引号会导致语法错误,不可以使用);
  • JavaScript字符串既可以使用单引号也可以使用双引号。

布尔值和Null也是有效JSON形式。但是,在实际应用中,JSON更多的使用更复杂的数据结构,而简单值只是整个数据结构种的一部分。

 

二、对象

JSON中的对象与JavaScript字面量稍微有一点不同。

下面是JavaScript中的对象字面量

var person={
        name:"Luxi",
        age:30
    };

这虽然是开发人员在JavaScript中创建对象字面量的标准模式,但JSON中的对象要求给属性加上引号

实际上,在JavaScript中前面的对象自变量还可以写成下面这种形式:

var person={
        "name" : "Luxi",
        "age" : 30
    };

JSON表示上述对象的方法如下:

与JavaScript的对象字面量相比,JSON中的不同之处:

1、没有声明变量(JSON中没有变量的概念);

2、没有末尾的分号(因为不是JavaScript语句所以不需要分号);

3、对象的属性必须要加双引号,这在JSON中是必须的;

4、属性的值可以是简单值,也可以是复杂类型值

因此可以像下面这样对象中嵌入对象:

这个例子在顶级对象中嵌入了学校("school")信息。虽然有两个 "name" 属性,但是由于他们分别是属于的不同的对象的,因此这样完全没有问题。

注意:同一个对象中绝对不应该出现两个相同名称的属性。

与JavaScript不同,JSON中对象的属性名在任何时候都必须加双引号。(忘记给对象属性名加双引号或是双引号写成单引号都是很常见的错误,要避免)

三、数组

JSON中的第二种复杂数据类型是 数组 。JSON数组采用的就是JavaScript中的数组字面量形式。

例如,下面是JavaScript中的数组字面量:

var values = [25,"h1",true];

在JSON中,也可以采用相同的语法表示同一个数组:

 注意: JSON数组中没有变量和分号。把数组和对象结合起来,可以构成更加复杂的数据集合。

 在这个数组中包含一些关于表示人的信息的对象,每个对象都有几个属性,其中一个属性是 "address" ,这个属性的值又是一个数组。对象和数组通常是JSON数据结构的最外层形式(并不强制规定),利用他们能够创造出来各种各样的数据结构。

原文地址:https://www.cnblogs.com/nyw1983/p/11605210.html