Skip to main content

1. Introduction (简介)

JavaScript对象表示法 (JavaScript Object Notation, JSON) 是一种用于结构化数据序列化的文本格式。它源自JavaScript的对象字面量,如ECMAScript编程语言标准第三版 [ECMA-262] 中所定义。

JSON可以表示四种原始类型 (Primitive Types)(字符串、数字、布尔值和null)以及两种结构化类型 (Structured Types)(对象和数组)。

字符串 (String) 是零个或多个Unicode字符 [UNICODE] 的序列。请注意,此引用指的是Unicode的最新版本,而不是特定版本。预计Unicode规范的未来变化不会影响JSON的语法。

对象 (Object) 是零个或多个名称/值对 (Name/Value Pairs) 的无序集合,其中名称是字符串,值可以是字符串、数字、布尔值、null、对象或数组。

数组 (Array) 是零个或多个值的有序序列。

术语"对象"和"数组"来自JavaScript的约定。

JSON的设计目标是使其最小化、可移植、文本化,并且是JavaScript的子集。

1.1. Conventions Used in This Document (本文档使用的约定)

本文档中的关键词"MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"和"OPTIONAL"应按照 [RFC2119] 中的描述进行解释。

本文档中的语法规则应按照 [RFC5234] 中的描述进行解释。

1.2. Specifications of JSON (JSON的规范)

本文档更新了 [RFC4627],后者描述了JSON并注册了媒体类型"application/json"。

ECMAScript规范 [ECMA-262] 5.1版第15.12节以ECMAScript术语描述了JSON。JSON也在 [ECMA-404] 中进行了描述。

所有JSON语法规范在语言的语法元素上都达成一致。

1.3. Introduction to This Revision (本修订版简介)

自RFC 4627发布以来的这些年里,JSON得到了非常广泛的使用。这些经验揭示了某些模式,虽然其规范允许,但却导致了互操作性问题。

此外,还报告了少量勘误(参见RFC勘误ID 607 [Err607] 和3607 [Err3607])。

本文档的目标是应用这些勘误,消除与其他JSON规范的不一致性,并强调可能导致互操作性问题的实践。