开发调试11 分钟阅读更新于 2026-07-15

JSON 校验失败怎么办:接口请求体、返回体和日志里的常见坑

从真实接口联调出发,整理 JSON 校验失败、格式化失败、字段类型不对、Content-Type 不匹配的排查方法。

相关工具

先分清是语法错还是业务错

JSON 校验失败通常是语法问题,比如少了双引号、多了逗号、括号不成对、用了单引号、复制了注释。业务错则是 JSON 语法没问题,但字段不符合接口要求,比如 age 应该是数字却传了字符串,items 应该是数组却传了对象。两类问题处理方式不同。

排查时先把请求体或响应体复制到 JSON 工具里校验。如果语法不通过,先解决 JSON 本身;如果语法通过,再看接口文档、字段类型和必填项。不要在语法还错的时候就讨论业务含义。

合法 JSON 和 JavaScript 对象不是一回事

很多新手会把 JavaScript 对象当成 JSON。下面这种在 JS 里可能能写,但不是合法 JSON:

javascript代码示例
{
  name: '张三',
  age: 18,
}

合法 JSON 应该是双引号、不能有末尾逗号、不能写注释:

json代码示例
{
  "name": "张三",
  "age": 18
}

如果你从代码、控制台或文档里复制示例,先用 JSON 校验工具过一遍。很多接口 400 错误,本质就是请求体不是合法 JSON。

Content-Type 不对也会导致解析失败

发送 JSON 请求时,Header 通常要带 Content-Type: application/json。如果你用表单方式发送,服务端可能按 x-www-form-urlencoded 或 multipart/form-data 解析,自然拿不到预期字段。接口调试时要一起看请求体和请求头,不能只看 body。

一个基础请求示例:

bash代码示例
curl -X POST "https://api.example.com/users" \
  -H "Content-Type: application/json" \
  -d '{"name":"张三","age":18}'

如果服务返回的 Content-Type 不是 application/json,也不要直接按 JSON 解析。有些登录失效、网关错误、限流页面会返回 HTML,此时 JSON.parse 报错是正常的,真正的问题在响应内容类型。

字段类型要按接口约定来

JSON 里数字、字符串、布尔值、null、数组、对象是不同类型。"18" 和 18 不一样,"false" 和 false 也不一样。表格导入、CSV 转 JSON、低代码平台传参时,最容易把所有内容都变成字符串,导致接口校验失败。

上线前最好准备一份最小可用请求体,只保留必填字段,确认能成功后再逐步加字段。这样一旦失败,就知道是刚加的字段出了问题。复杂接口不要一开始塞满所有参数,否则排查成本会很高。需要数据库服务承载正式数据时,可以参考阿里云数据库产品页:https://www.aliyun.com/product/rds?userCode=hzn6nvhm

常见问题

JSON 可以用单引号吗?

不可以。标准 JSON 字符串和属性名都要使用双引号。

为什么 JSON 校验通过但接口还是报错?

说明语法没问题,但字段类型、必填项、业务规则或 Header 可能不符合接口要求。

接口返回 HTML 导致 JSON.parse 报错怎么办?

先看响应状态码和 Content-Type,可能是登录页、错误页、网关页或限流页。