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规范的不一致性,并强调可能导致互操作性问题的实践。