RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format
JavaScript对象表示法(JSON)数据交换格式
发布日期: 2014年3月
状态: 互联网标准跟踪协议 (Standards Track)
作者: T. Bray (Google, Inc.)
废止: RFC 4627, RFC 7158
摘要 (Abstract)
JavaScript对象表示法 (JavaScript Object Notation, JSON) 是一种轻量级、基于文本、语言无关的数据交换格式。它源自ECMAScript编程语言标准。JSON定义了一小组格式化规则,用于结构化数据的可移植表示。
本文档消除了与其他JSON规范的不一致性,修复了规范错误,并提供了基于经验的互操作性指导。
本备忘录状态 (Status of This Memo)
这是一个互联网标准跟踪文档。
本文档是互联网工程任务组 (Internet Engineering Task Force, IETF) 的成果。它代表了IETF社区的共识。已经过公开审查并获得互联网工程指导小组 (Internet Engineering Steering Group, IESG) 批准发布。有关互联网标准的更多信息,请参见RFC 5741第2节。
目录 (Table of Contents)
- 1. Introduction (简介)
- 1.1 Conventions Used in This Document (本文档使用的约定)
- 1.2 Specifications of JSON (JSON的规范)
- 1.3 Introduction to This Revision (本修订版简介)
- 2. JSON Grammar (JSON语法)
- 3. Values (值)
- 4. Objects (对象)
- 5. Arrays (数组)
- 6. Numbers (数字)
- 7. Strings (字符串)
- 8. String and Character Issues (字符串和字符问题)
- 8.1 Character Encoding (字符编码)
- 8.2 Unicode Characters (Unicode字符)
- 8.3 String Comparison (字符串比较)
- 9. Parsers (解析器)
- 10. Generators (生成器)
- 11. IANA Considerations (IANA注意事项)
- 12. Security Considerations (安全考虑)
- 13. Examples (示例)
- 14. Contributors (贡献者)
- 15. References (参考文献)
- 15.1 Normative References (规范性参考文献)
- 15.2 Informative References (信息性参考文献)
附录 (Appendix)
JSON核心概念
数据类型
JSON支持以下数据类型:
原始类型 (Primitive Types):
string- 字符串number- 数字boolean- 布尔值 (true/false)null- 空值
结构化类型 (Structured Types):
object- 对象(无序的键值对集合)array- 数组(有序的值序列)
语法示例
对象 (Object):
{
"name": "张三",
"age": 30,
"city": "北京"
}
数组 (Array):
[1, 2, 3, 4, 5]
嵌套结构:
{
"users": [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30}
],
"total": 2
}
与RFC 4627的主要变化
- JSON文本定义更宽松: 允许JSON文本为任何JSON值,而不仅限于对象或数组
- 修复勘误: 修复了RFC 4627中报告的错误
- 互操作性指导: 提供了更多关于实现互操作性的建议
- 编码明确: 强调UTF-8编码的使用
相关资源 (Related Resources)
- 官方原文: RFC 7159 (TXT)
- 官方页面: RFC 7159 DataTracker
- 废止: RFC 4627 (旧版JSON规范)
- 被废止: 已被 RFC 8259 废止
- 媒体类型:
application/json - 文件扩展名:
.json
快速参考
MIME类型
Content-Type: application/json; charset=UTF-8
常用工具
在线验证:
编程语言支持:
JavaScript:
const obj = JSON.parse('{"name":"Alice"}');
const str = JSON.stringify({name: "Bob"});
Python:
import json
obj = json.loads('{"name":"Alice"}')
str = json.dumps({"name": "Bob"})
Java:
// 使用 Jackson 或 Gson 库
ObjectMapper mapper = new ObjectMapper();
MyObject obj = mapper.readValue(jsonString, MyObject.class);
重要提示: RFC 7159已被RFC 8259取代,但仍然是理解JSON演进历史的重要文档。现代应用应参考RFC 8259作为最新标准。