首发于知识猫

十分钟搞定JSON和JSON对象

JSON是JavaScript Object Notation的缩写,中文译为JavaScript对象表示法。用来作为数据交换的文本格式,作用类似于XML,而2001年Douglas Crockford提出的目的就是为了取代XML,它不是一种编程语言,仅用来描述数据结构。


1、JSON语法规则

JSON的语法可以表示以下三种类型的值:简单值、JSON对象和数组。

(1)简单值

简单值使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。

// 简单值
"Hello World!" // 字符串
99 // 数值
true // 布尔型
false // 布尔型
null

// 在JSON中不能使用的值
NaN // 数值不能是NaN
Infinity // 数值不能是Infinity
undefined // 在JSON也不可以使用JavaScript中的undefined
'Hello World!' // 字符串必须使用双引号表示,不能使用单引号
0x1 // 数值必须以十进制表示,不能使用十六进制

(2)对象

对象是一组有序的键值对的数据组成的数据类型。键值对中,值可以是简单值,也可以是对象和数组(数组也是用来表示JSON的数据类型,见接下来内容)。一般很多刚入门的同学都在JavaScript中使用JSON所以经常会和JSON对象混淆,要十分注意。

// 对象,对象的属性名必须使用双引号,值要是字符串也必须使用双引号
{
  "name": "Andy",
  "age": 18,
  "isStudent": true,
  "isLeader": false,
  "mark": null,
  "school": {
    "name": "BIT",
    "region": "Beijing" // 这个地方不能有逗号,因为是对象的最后一个属性成员
  } // 这个地方也不可以有逗号,因为也是对象的最后一个属性成员
}

(3)数组

数组是由一组有序的数组组成的列表。在数组中,值可以是简单值,也可以是对象和数组。记住,记住,再记住,在JSON中数组最后一个元素一定不要有逗号。

// 示例一
["Andy", "Ruby", "Danny", "Peter", "Lisa"]
// 示例二
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
// 示例三
[
  {"name": "Andy", "age": 18},
  {"name": "Ruby", "age": 18},
  {"name": "Danny", "age": 20}
]
// 示例四
[
  [0, 1, 2],
  [3, 4, 5],
  [6, 7, 8]
]

2、JSON字符串和JSON对象

(1)JSON字符串

JSON字符串与普通的字符串没有任何特殊的地方,但是之所以称为JSON字符串是因为,这个字符串符合我们前面介绍的语法规则。

//JSON字符串
var p ='{"name":"Andy","gender":"男","age":"18"}';
console.log(p); // {"name":"Andy","gender":"男","age":"18"}
alert(typeof(p));// string

(2)JSON对象

JSON对象主要是在JavaScript的说法。在面向对象编程中,类的实例化叫做对象,对象拥有不同的属性,键值对就是对象的属性和值。

// JSON对象
var person={
  "name":"Andy",
  "gender":"男",
  "age":"18"
}
console.log(person.name);// 在控制台输出Andy,可以通过点运算直接访问对象属性
alert(typeof(person));// object

(3)JSON字符串和JSON对象互相转换

JavaScript中有一个全局的对象,JSON。JSON中有两个方法 stringify() 和 parse()。

JSON.parse() 把JSON字符串解析为JSON对象

//JSON字符串通过parse转化为JSON对象
var p ='{"name":"Andy","gender":"男","age":"18"}';
person = JSON.parse(p)
console.log(person.name);// 在控制台输出Andy,可以通过点运算直接访问对象属性
alert(typeof(person));// object

JSON.stringify() 用于把JSON对象序列化为JSON字符串。

//JSON对象通过stringify转化为JSON字符串
var person={
  "name":"Andy",
  "gender":"男",
  "age":"18"
}
var p = JSON.stringify(person)
console.log(p); // {"name":"Andy","gender":"男","age":"18"}
alert(typeof(p));// string

编辑于 2018-12-26 07:16