JSON语法规则
JSON 的语法与 JavaScript 中的对象很像,在 JSON 中主要使用以下两种方式来表示数据:
下面展示了一个简单的 JSON 数据:
另外,在 JSON 中,不同的键/值对之间需要使用逗号进行分隔,如下例所示:
首先,JSON 是一种数据交换格式,可以跨语言、跨平台使用,它只是与 JavaScript 有些渊源,并不是 JavaScript 的一部分。
就语法而言,JSON 与 JavaScript 最主要的区别就是,JSON 中每个键都必须是一个字符串,而 JavaScript 对象则没有这个限制,如下所示:
-
Object(对象):键/值对(名称/值)的集合,使用花括号
{ }
定义。在每个键/值对中,以键开头,后跟一个冒号:
,最后是值。多个键/值对之间使用逗号,
分隔,例如{"name":"C语言中文网","url":"http://c.biancheng.net"}
; -
Array(数组):值的有序集合,使用方括号
[ ]
定义,数组中每个值之间使用逗号,
进行分隔。
下面展示了一个简单的 JSON 数据:
{ "Name":"C语言中文网", "Url":"http://c.biancheng.net/", "Tutorial":"JSON", "Article":[ "JSON 是什么?", "JSONP 是什么?", "JSON 语法规则" ] }
注意:所有 JSON 数据需要包裹在一个花括号中,类似于 JavaScript 中的对象。
JSON 中的键
JSON 数据是以键/值对(名称/值)的形式书写的,键表示数据的名称,需要以字符串的形式定义(在双引号中定义),后面紧跟一个冒号,最后是值,如下例所示:"name":"C语言中文网"
类似于 JavaScript 对象中的:name:"C语言中文网"
JSON 中的值
JSON 中的值可以是以下数据类型:- 数字(整数或浮点数);
- 字符串(需要在双引号中定义);
- 布尔值(true 或 false);
- 数组(在方括号中定义);
- 对象(在花括号中定义);
- null(空)。
另外,在 JSON 中,不同的键/值对之间需要使用逗号进行分隔,如下例所示:
{ "number":123, "float":3.14, "string":"C语言中文网", "bool":true, "array":[ "employees", {"name":"peter", "age": 18}, {"name":"Anna", "age": 16} ], "object":{ "name":"C语言中文网", "url":"http://c.biancheng.net/" } }在使用 JSON 时,有以下几点需要注意:
- JSON 是一段包裹在花括号中的数据,数据由若干键/值对组成;
- 键和值之间使用冒号分隔;
- 不同的键/值对之间使用逗号分隔;
- 键需要以字符串的形式定义(即使用双引号包裹,注意:不能使用单引号);
- 值可以是数字、字符串、布尔值、数组、对象、null;
- 键必须是唯一的,不能重复,否则后定义的键/值对会覆盖前面定义的键/值对;
- JSON 中不可以使用八进制或十六进制表示数字。
JSON 与 JavaScript 对象的区别
粗略的看起来,您可能觉得 JSON 就是一个 JavaScript 的对象,但其实不是这样的,JSON 与 JavaScript 对象之间还是有区别的。首先,JSON 是一种数据交换格式,可以跨语言、跨平台使用,它只是与 JavaScript 有些渊源,并不是 JavaScript 的一部分。
就语法而言,JSON 与 JavaScript 最主要的区别就是,JSON 中每个键都必须是一个字符串,而 JavaScript 对象则没有这个限制,如下所示:
// JavaScript 中的对象
{
foo: "bar"
}
// JSON
{
"foo": "bar"
}