JSON 语法速查表 - JSON 数据格式常用命令大全
前后端联调时,JSON 是 API 响应的默认格式,也是最容易因末尾多逗号、键漏双引号而报错的格式之一。这份速查覆盖 6 组高频写法——数据类型、对象、数组、嵌套、常见 API 响应结构、校验与格式化命令(JSON.parse、jq 等):既帮你按模板写出规范数据,也提供排错对照与 jq 快速校验的入口。读完你能熟练拼装符合规范的 JSON,并快速用工具验证其正确性。
典型使用场景
前后端联调与接口对接时,JSON 是数据交换和返回的默认格式,最常见的场景有三种:拼装请求体、解析响应的嵌套字段,以及排查"为什么 JSON.parse 抛错"。比如接口返回 data.items 数组与 total 总数,你需要按 common patterns 的约定去读取分页字段;写请求体时则要严格保证键用双引号、无尾随逗号。拼好后用 jsonlint 或 jq 做一次校验,能大幅减少线上联调时因格式问题来回返工。读完本表,你能随手写出规范 JSON 并用工具自检正确性。
数据类型 Data Types 6
"string"123 / -456 / 3.14true / falsenull{"key": "value"}[1, 2, 3]对象 Object 5
{"name": "tom"}{"name": "tom", "age": 20}{"user": {"name": "tom"}}{"users": [{"name": "tom"}]}{"key with space": "value"}数组 Array 5
[1, 2, 3]["a", "b", "c"][{"id": 1}, {"id": 2}][[1, 2], [3, 4]][1, "text", true, null]嵌套结构 Nested 3
{"user": {"name": "tom", "age": 20}}{"users": [{"name": "tom"}, {"name": "jerry"}]}[{"id": 1, "tags": ["a", "b"]}]常见格式 Common Patterns 4
{"code": 200, "message": "success"}{"error": {"code": 404, "message": "Not found"}}{"data": {"items": [], "total": 100}}{"id": 1, "created_at": "2026-07-19T10:30:00Z"}校验与格式化 Validation 5
JSON.parse(str)JSON.stringify(obj)JSON.stringify(obj, null, 2)jsonlint file.jsonjq . file.json命令示例
校验并美化 JSON 文件
jsonlint data.json\njq . data.jsonjsonlint 语法正确时无输出,出错会报错并给出行列位置;jq . 把压缩的单行 JSON 格式化为带缩进的可读形式。
输出
jq 输出:\n{\n "name": "tom",\n "age": 20\n}把对象格式化为缩进 JSON
JSON.stringify({ name: "tom", age: 20 }, null, 2)第三个参数 2 表示缩进 2 个空格,中间的 null 是替换器占位;输出便于日志打印或比对差异。
输出
{\n "name": "tom",\n "age": 20\n}常见坑与注意事项
- JSON 键必须用双引号,且不允许尾随逗号;末尾多一个逗号会让前端 JSON.parse 直接抛错。
- JSON 不支持注释与裸键,需要注释时改用 JSONC 或把说明放到文档外。
- 超大的整数在 JS 中解析可能丢失精度,跨系统传输大整数建议使用字符串表示。
- 日期没有原生类型,统一用 ISO 8601 字符串,避免用易歧义的时间戳整数。
- 用 JSON.parse(JSON.stringify(obj)) 做深拷贝会丢掉 Date、undefined 与函数,仅适合纯数据对象。
提示
- JSON 键名必须用双引号,不能用单引号或不加引号。
- JSON 不支持注释,如果需要注释用 JSONC(JSON with Comments)。
- 日期时间建议用 ISO 8601 格式(如 "2026-07-19T10:30:00Z")。
常见问题
json 字符串值里有换行该怎么写?
JSON 不允许字符串里出现真实的换行符,必须转义成 \n;同理制表符用 \t。用 JSON.stringify(value) 会自动完成转义,比手写更不易出错。中文则可以不转义,按 UTF-8 直接写即可,多数解析器都能正常读取。
json 报错一般是哪些原因,怎么快速定位?
最常见三类:漏了键名双引号、对象或数组最后多了一个逗号(trailing comma)、括号与引号不成对。用 jq . 校验会提示所在行和错误类型;前端把 JSON.parse 包进 try/catch 并打印出错片段,逐步二分注释缩小范围。
json 里的中文需要转义吗?
按规范并不强制,UTF-8 下直接写中文是合法 JSON,大多数解析器都能正常读。只有协议要求 ASCII-only(如某些旧的头或日志管道)时,才需把中文转成 \uXXXX 形式,可用工具的 -ascii 选项或 JSON.stringify 的替代实现统一处理。
json 数字写成带引号的字符串有问题吗?
语法上没问题但语义不同:"123" 是字符串,123 是数字,前端 typeof 与运算结果都不同,排序也会变字典序。需要保留前导零或超长 ID 时用字符串;其余数值应写成数字字面量,布尔值用 true/false 而不要写成字符串。
json 含嵌套或大文件怎么快速校验和取值?
用 jq 最方便:jq . file.json 校验并美化,jq '.key' 取值,jq 'length' 看数组长度;只想检查是否合法可 jq empty file.json。前端用 JSON.parse 包 try/catch 校验,可视化可用 jqplay 或在线 JSON 验证器。
由 巧匠 维护
公开更新于 2026年7月21日,内容持续校对官方文档。