JSON 语法速查表 - JSON 数据格式常用命令大全

前后端联调时,JSON 是 API 响应的默认格式,也是最容易因末尾多逗号、键漏双引号而报错的格式之一。这份速查覆盖 6 组高频写法——数据类型、对象、数组、嵌套、常见 API 响应结构、校验与格式化命令(JSON.parse、jq 等):既帮你按模板写出规范数据,也提供排错对照与 jq 快速校验的入口。读完你能熟练拼装符合规范的 JSON,并快速用工具验证其正确性。

配置格式·共 28 条命令·最后更新 2026-07-21
json数据格式配置

典型使用场景

前后端联调与接口对接时,JSON 是数据交换和返回的默认格式,最常见的场景有三种:拼装请求体、解析响应的嵌套字段,以及排查"为什么 JSON.parse 抛错"。比如接口返回 data.items 数组与 total 总数,你需要按 common patterns 的约定去读取分页字段;写请求体时则要严格保证键用双引号、无尾随逗号。拼好后用 jsonlint 或 jq 做一次校验,能大幅减少线上联调时因格式问题来回返工。读完本表,你能随手写出规范 JSON 并用工具自检正确性。

数据类型 Data Types 6

"string"
字符串(必须用双引号)
123 / -456 / 3.14
数字(整数或浮点数)
true / false
布尔值
null
空值
{"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"}
API 响应格式
{"error": {"code": 404, "message": "Not found"}}
错误响应
{"data": {"items": [], "total": 100}}
分页数据
{"id": 1, "created_at": "2026-07-19T10:30:00Z"}
含时间戳

校验与格式化 Validation 5

JSON.parse(str)
JavaScript 解析 JSON 字符串
JSON.stringify(obj)
JavaScript 对象转 JSON 字符串
JSON.stringify(obj, null, 2)
格式化输出(缩进 2 空格)
jsonlint file.json
命令行校验 JSON 语法
jq . file.json
命令行美化和查询 JSON

命令示例

校验并美化 JSON 文件

jsonlint data.json\njq . data.json

jsonlint 语法正确时无输出,出错会报错并给出行列位置;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日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们