在前后端开发、接口调试、数据传输和配置文件处理中,JSON 是最常见的数据交换格式之一。它结构清晰、语法简洁、跨语言兼容性强,因此被广泛应用于 Web 开发、API 接口、配置管理和自动化系统中。
但也正因为 JSON 语法非常严格,哪怕只是一个引号、一个逗号或一个括号写错,都可能导致整个 JSON 无法解析。很多开发者在实际使用中,经常会遇到“格式化失败”“解析报错”“反序列化异常”“乱码”等问题。
那么,**JSON 格式化常见问题到底有哪些?又该如何快速排查和修复?**本文就来系统讲清楚。
什么是 JSON 格式化?
JSON 格式化,通常指的是将原本紧凑或杂乱的 JSON 数据,按照规范进行缩进、换行和结构整理,使其更容易阅读、编辑和检查。
例如,下面是一段未格式化的 JSON:
{"name":"Alice","age":30,"isActive":true}
格式化后会变成:
{
"name": "Alice",
"age": 30,
"isActive": true
}
格式化本身不会改变数据含义,但可以帮助我们更直观地发现语法问题和结构错误。
JSON 格式化为什么经常出错?
JSON 看起来简单,但它的语法要求非常严格。与 JavaScript 对象写法不同,JSON 不是“差不多就能运行”的格式,而是必须完全符合标准规范。
很多时候,工具提示“JSON invalid”“Unexpected token”“Parse error”之类的报错,本质上都是因为以下几类问题引起的。
一、最常见的语法错误
1. 键名或字符串没有使用双引号
这是最常见的问题之一。JSON 标准要求,所有键名和字符串值都必须使用双引号,不能用单引号,也不能省略引号。
错误写法:
{name: 'Alice'}
正确写法:
{"name": "Alice"}
很多人容易把 JavaScript 对象字面量的写法误当成 JSON,这是导致格式化失败的高频原因。
2. 末尾多了一个逗号
JSON 对逗号非常敏感。对象或数组中,最后一个元素后面不能加尾随逗号。
错误写法:
{"a": 1, "b": 2,}
正确写法:
{"a": 1, "b": 2}
数组也是一样:
错误写法:
[1, 2, 3,]
正确写法:
[1, 2, 3]
很多编辑器会自动补全或保留逗号,这一点尤其需要注意。
3. 缺少逗号分隔符
JSON 中的对象属性和数组元素之间,必须用逗号隔开。如果漏掉逗号,解析器通常会直接报错。
错误写法:
{"name": "Alice" "age": 30}
正确写法:
{"name": "Alice", "age": 30}
这种错误在复制粘贴字段或手动拼接 JSON 时非常常见。
4. 括号没有成对出现
JSON 中只允许使用两类结构:
- 对象:
{} - 数组:
[]
如果花括号或方括号没有正确闭合,整段 JSON 就会失效。
错误写法:
{"user": {"name": "Tom", "age": 25}
正确写法:
{"user": {"name": "Tom", "age": 25}}
嵌套层级一多,这种问题特别容易出现。
二、数据类型使用错误
1. 数字、布尔值、null 被错误加上引号
JSON 支持字符串、数字、布尔值、对象、数组和 null,但不同类型的写法必须严格区分。
错误写法:
{
"age": "30",
"isActive": "true",
"value": "null"
}
正确写法:
{
"age": 30,
"isActive": true,
"value": null
}
加上引号之后,这些值就不再是原来的数据类型,而是普通字符串了。在接口对接、数据库写入或程序反序列化时,常常会因此出错。
2. 使用了 JSON 不支持的值
JSON 不是 JavaScript 全量语法,它不支持以下内容:
undefinedfunctionNaNInfinity
例如下面这种写法就是无效的:
{
"score": NaN
}
或者:
{
"callback": function() {}
}
如果需要传递这类信息,通常要转换成字符串,或者在业务逻辑中另行处理。
三、特殊字符与转义问题
1. 双引号没有转义
JSON 字符串内部如果包含双引号,必须进行转义,否则会破坏原有结构。
错误写法:
{
"text": "他说:"你好""
}
正确写法:
{
"text": "他说:\"你好\""
}
2. 换行、制表符等未正确处理
JSON 中一些特殊字符需要使用转义符,例如:
- 换行:
\n - 制表符:
\t - 回车:
\r - 反斜杠:
\\
如果直接把这些字符原样放进 JSON 字符串,有时会引发格式错误或显示异常。
3. 路径中的反斜杠没有转义
在 Windows 路径中尤其容易遇到这个问题。
错误写法:
{
"path": "C:\new\test"
}
正确写法:
{
"path": "C:\\new\\test"
}
因为反斜杠在 JSON 中本身就有转义作用,所以路径中的 \ 必须写成 \\。
四、编码与乱码问题
1. 文件不是 UTF-8 编码
JSON 标准要求通常使用 UTF-8 编码。如果文件编码不正确,可能会出现乱码、解析失败、接口接收异常等问题。
特别是在以下场景中要重点注意:
- 从 Excel 或记事本导出的 JSON
- 不同系统间复制数据
- 接口响应头未正确声明编码
- 后端生成 JSON 时字符集配置错误
如果发现中文乱码、特殊字符异常,首先应检查文件编码是否为 UTF-8。
2. 中文与 Unicode 转义混用导致阅读困难
JSON 支持直接写中文,也支持使用 Unicode 编码,例如:
{"name": "张三"}
也可以写成:
{"name": "\u5f20\u4e09"}
两者都合法,但如果整份 JSON 全是 Unicode 转义,虽然程序能识别,人阅读和排错会非常不方便。
五、嵌套结构复杂导致的问题
当 JSON 数据层级变深后,最常出现的问题就是结构混乱、闭合不完整、层级对应错误。
例如,一个对象中嵌套数组,数组中再嵌套对象,手动编写时很容易漏写一个 ] 或 },导致整段内容无法格式化。
这类问题的典型表现有:
- 格式化工具无法解析
- 报错位置不明确
- 视觉上看不出哪里错
- 改了一个地方,其他地方又出问题
因此,JSON 层级较深时,不建议手动“肉眼对齐”,最好借助格式化工具自动缩进,再逐层检查括号匹配关系。
六、不同语言和框架处理不一致
虽然 JSON 是标准格式,但不同开发语言、库和框架在序列化和反序列化时,行为可能并不完全相同。
例如有些框架会自动把属性名转成驼峰命名,有些会保留原始大小写;有些会忽略 null 字段,有些则会完整输出;有些日期格式默认是时间戳,有些则输出标准日期字符串。
这就导致一个现象:同样一份 JSON,在一个环境中正常,在另一个环境中却报错或解析结果不同。
开发中常见的表现包括:
- 属性名大小写不一致
- 日期时间格式不匹配
- null 值丢失
- 枚举值输出方式不同
- 布尔值或数字被转成字符串
因此,遇到 JSON 格式化或解析问题时,除了检查语法本身,还要检查当前语言或框架的默认配置。
七、日期时间字段格式不匹配
日期时间是 JSON 中一个非常容易出问题的字段类型。因为 JSON 本身并没有“日期”这种专属类型,日期通常会以字符串形式传输。
例如:
{
"createTime": "2026-04-15 10:30:00"
}
问题在于,不同后端框架、注解、时区配置对日期格式要求不同。如果前后端约定不一致,就容易导致:
- 反序列化失败
- 日期为空
- 时间偏差 8 小时
- 格式化时报错
因此在接口设计时,日期字段最好统一规范,例如明确使用:
yyyy-MM-ddyyyy-MM-dd HH:mm:ss- ISO 8601 格式
- 时间戳格式
只有格式统一,才能避免大量兼容性问题。
八、在线格式化工具无法处理异常 JSON
很多人会把 JSON 粘贴到在线工具里格式化,但如果原始内容本身已经有错误,工具就无法正常处理。
常见情况包括:
- key 没有双引号
- 多了逗号
- 混入注释
- 使用了单引号
- 包含非法值
标准 JSON 格式化工具通常只能处理“合法 JSON”,而不能自动修复“类 JSON”或“伪 JSON”。
所以如果工具提示格式化失败,不一定是工具坏了,更可能是输入内容本身已经不符合 JSON 标准。
如何快速排查 JSON 格式化错误?
当你遇到 JSON 报错时,可以按照下面的思路检查:
先看最基础的语法:
- 键名是否用了双引号
- 字符串是否用了双引号
- 末尾是否多了逗号
- 逗号有没有漏掉
- 括号是否完整闭合
再看数据类型:
- 数字是否误写成字符串
- true、false、null 是否写对
- 是否混入 undefined、NaN、函数等非法值
接着检查特殊字符:
- 双引号是否转义
- 路径中的反斜杠是否写成
\\ - 换行符、制表符是否正确转义
最后检查环境和编码:
- 文件是否为 UTF-8
- 框架是否做了额外转换
- 日期格式是否和后端规则一致
JSON 格式化的实用建议
为了减少 JSON 格式错误,实际开发中可以养成这几个习惯:
第一,尽量不要手动硬写复杂 JSON,优先使用编辑器、调试工具或程序生成。
第二,接口联调前先做一次 JSON 校验,尽早发现问题。
第三,保持字段命名和数据类型统一,避免前后端理解不一致。
第四,涉及路径、HTML、SQL、正则等特殊字符串时,重点检查转义。
第五,遇到报错不要只看第一行,往往真正的问题出在前面某个括号或逗号位置。
结语
JSON 看起来简单,但它其实是一种“语法容错率极低”的数据格式。一个小小的引号、一个多余的逗号、一个未闭合的括号,都可能让整个 JSON 无法解析。
因此,理解 JSON 格式化中的常见问题,不只是为了让数据变好看,更重要的是为了提高接口联调效率、减少开发错误、提升系统稳定性。
无论你是前端开发、后端工程师、测试人员,还是经常接触接口数据的运维人员,掌握 JSON 的常见报错原因和修复方法,都会非常实用。