JSON
JSON(JavaScript Object Notation,JavaScript 对象表示法)是一种基于文本的数据交换格式。它的语法源自 JavaScript 的对象字面量,但本身与语言无关,几乎所有编程语言都有解析和生成它的库。因为结构简单、可读性好,它已成为 Web API、配置文件和跨系统数据传输的事实标准。
一个 JSON 文档由两种结构组合而成:对象 {}(无序的键值对集合)和数组 [](有序的值列表)。值只能是六种类型之一:字符串、数字、布尔值 true/false、null,以及嵌套的对象或数组。例如 {"name":"Ada","age":36,"tags":["dev"]}。
使用中常见的坑:
- 键必须是双引号包裹的字符串,字符串值也只能用双引号,不能用单引号。
- 不允许尾随逗号,最后一个元素后面多写一个逗号就会解析失败。
- 标准 JSON 不支持注释,也不接受
undefined、NaN、Infinity。 - 数字不区分整数和浮点,超过 2^53 的大整数在很多解析器里会丢失精度。
常见问题
JSON 和 JavaScript 对象是一回事吗?
不是。JSON 是一段文本(字符串),而 JavaScript 对象是内存里的数据结构。JSON 的键必须用双引号、值只能是那几种规定类型;JS 对象字面量则允许不带引号的键,还能放函数、undefined 等。两者通过 JSON.parse 和 JSON.stringify 互相转换。
JSON 为什么不能写注释,需要注释怎么办?
标准 JSON 规范里没有注释语法,加了 // 或 /* */ 会导致解析报错。如果确实需要,可以改用 JSON5、JSONC(如 VS Code 配置)等扩展格式,或者干脆加一个约定的 "_comment" 字段来存放说明。
为什么我的 JSON 老是解析失败?
最常见的三种原因:用了单引号而不是双引号、对象或数组末尾多了一个尾随逗号、键没有加引号。此外注释和 NaN/Infinity 这类非法值也会报错,可以用格式化/校验工具定位到具体出错的位置。
相关工具
相关名词
XML · YAML · JSON Schema