JavaScript JSON

JSON 是目前最流行的存储和传输数据的格式。

JSON 经常在数据从服务器发送到网页时使用。


什么是 JSON?

JSON 指的是 JavaScript Object Notation,是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言,也是目前最流行的存储和传输数据的格式。

JSON 的语法是来自 JavaScript 对象符号的语法,但 JSON 格式是纯文本。读取和生成 JSON 数据的代码可以在任何编程语言编写的。


JSON 实例

JSON 语法定义了一个雇员对象:包含三条员工记录的数组(对象):

  1. {
  2. "employees":[
  3. {"firstName":"比尔", "lastName":"盖茨"},
  4. {"firstName":"史蒂夫", "lastName":"乔布斯"},
  5. {"firstName":"马克", "lastName":"扎克伯格"}
  6. ]
  7. }

JSON 格式评估为 JavaScript 对象

JSON 格式在语法上与创建 JavaScript 对象的代码相同。

由于这种相似性,JavaScript 程序可以很容易地将 JSON 数据转换成本地的 JavaScript 对象。


JSON 语法规则

  • 数据是名称/值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 数据 - 名称和值

JSON 数据的书写方式是名称/值对,类似 JavaScript 对象属性。名称/值对由(双引号中的)字段名构成,其后是冒号,再其后是值:

  1. "firstName":"比尔"

JSON 名称需要双引号。JavaScript 名称不需要。


JSON 对象

JSON 对象是在花括号内书写的。

类似 JavaScript,对象能够包含多个名称/值对:

  1. {"firstName":"比尔", "lastName":"盖茨"}

JSON 数组

JSON 数组在方括号中书写。类似 JavaScript,数组能够包含对象:

  1. "employees":[
  2. {"firstName":"比尔", "lastName":"盖茨"},
  3. {"firstName":"史蒂夫", "lastName":"乔布斯"},
  4. {"firstName":"马克", "lastName":"扎克伯格"}
  5. ]

在上面的例子中,对象 "employees" 是一个数组。它包含了三个对象。

每个对象代表一个人的一条记录(带有名和姓)。


把 JSON 文本转换为 JavaScript 对象

JSON 的通常用法是从 web 服务器读取数据,然后在网页中显示数据。

为了简单起见,可以使用字符串作为输入演示。

首先,创建包含 JSON 语法的 JavaScript 字符串:

  1. var text = '{ "employees" : [' +
  2. '{ "firstName":"比尔" , "lastName":"盖茨" },' +
  3. '{ "firstName":"史蒂夫" , "lastName":"乔布斯" },' +
  4. '{ "firstName":"马克" , "lastName":"扎克伯格" } ]}';

然后,使用 JavaScript 的内置函数 JSON.parse() 来把这个字符串转换为 JavaScript 对象:

  1. var obj = JSON.parse(text);

最后,请在您的页面中使用这个新的 JavaScript 对象:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>用 JSON 字符串创建对象</h1>
  5. <p id="demo">
  6. <script>
  7. var text = '{"employees":[' +
  8. '{"firstName":"比尔","lastName":"盖茨" },' +
  9. '{"firstName":"史蒂夫","lastName":"乔布斯" },' +
  10. '{"firstName":"马克","lastName":"扎克伯格" }]}';
  11. obj = JSON.parse(text);
  12. document.getElementById("demo").innerHTML =
  13. obj.employees[1].firstName + " " + obj.employees[1].lastName;
  14. </script>
  15. </body>
  16. </html>

您可以在本站的 JSON 教程 中阅读更多有关 JSON 的内容。