之前写过一篇关于JSON的笔记,现在看来当初根本没搞清楚什么是JSON。所以,即使是很简单的知识,很难一遍学会,需要两遍,甚至多遍,因为第一次往往受限于以往的经验(知识)。
比如,我会迷惑于“JSON对象”和“JavaScript对象”有什么区别、“JSON字符串”和“字符串”不一样吗?当纠结于这些名词时,往往会把自己搞晕。这时候应该放弃对概念的执著,回到具体形式。
而且,我之前确实忽略了:JSON有三种类型。不仅有对象这种类型,还有简单值和数组,下面这几种形式都是JSON的有效值:
5
"Hello world!"
[25, "hi", true]
其中,"Hello world!"是一个字符串,所以,我们不必强调一个字符串是JavaScript字符或JSON字符串。当提到JSON字符串时,一般指由JavaScript对象序列化得到的字符串:
var book = {
title: "Professional JavaScript",
authors: ["Nicholas C. Zakas"],
editor: 3,
year: 2011
}
var jsonText = JSON.stringify(book);
这里,jsonText就是一个JSON字符串。
但是,JSON对象和JavaScript对象却有明显的区别,我觉得这也是理解JSON的关键,即JSON是一种数据格式,而不是编程语言,比如:
var person = {
name: "Nicholas",
age: 29
}
person是一个JavaScript对象,一个变量。
类似的,JSON对象的形式如下:
{
"name": "Nicholas",
"age": 29
}
上面,是一个JSON对象,不是一个变量,也没有语句,所以末尾不需要分号。
附两个注意:
1. JSON中,字符串必须用双引号。
2. JSON中,对象的属性名必须加双引号。