Skip to main content

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)

附录 (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的主要变化

  1. JSON文本定义更宽松: 允许JSON文本为任何JSON值,而不仅限于对象或数组
  2. 修复勘误: 修复了RFC 4627中报告的错误
  3. 互操作性指导: 提供了更多关于实现互操作性的建议
  4. 编码明确: 强调UTF-8编码的使用


快速参考

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作为最新标准。