JSON数据校验工具:开发中那些年踩过的坑

做前端开发这几年,最怕的不是写页面,而是接接口。尤其是后端给过来一段JSON数据,看着结构挺规整,结果一跑代码就报错,查半天才发现是某个字段少了个引号,或者布尔值写成了字符串。

为什么需要JSON数据校验工具

上周公司新上了一个用户中心功能,我负责前端展示。接口文档写得清清楚楚,返回的用户信息包含昵称、头像、是否实名认证这些字段。可实际调试时,is_verified 有时候是 true,有时候却是 "true",类型不统一,直接导致判断逻辑出问题。

这时候才意识到,光靠肉眼看JSON格式根本不可靠。就算语法没错,数据结构和预期不符照样会出事。于是开始找能自动校验JSON结构的工具,省得每次都要手动翻数据。

几个用起来顺手的校验方式

最简单的就是浏览器控制台直接粘贴。比如复制一段返回的JSON,在Console里敲:

JSON.parse(`{\"name\": \"小明\", \"age\": 25}`)
如果没报错,说明语法合法。但这只能验证基础格式,没法保证字段类型和层级对不对。

后来用了 JSON Schema,感觉打开了新世界。可以先定义一套规则,比如用户数据必须有 name 字段且为字符串,age 是数字且大于0。写好 schema 后用 ajv 这个库做验证:

const Ajv = require('ajv');
const ajv = new Ajv();

const schema = {
  type: 'object',
  properties: {
    name: { type: 'string' },
    age: { type: 'number', minimum: 0 }
  },
  required: ['name']
};

const validate = ajv.compile(schema);
const data = { name: 'Lily', age: -5 };

const valid = validate(data);
if (!valid) console.log(validate.errors);

这样一跑,立马提示 age 不符合 minimum 要求。团队现在把 schema 当作接口契约,前后端一起维护,减少了很多扯皮。

在线工具救急也挺好用

有时候临时要看别人给的一段JSON靠不靠谱,懒得搭环境。常用的有 jsonlint.comjsonschema.net,粘进去立刻高亮错误,还能自动生成 schema 骨架,特别适合快速排查。

有一次产品扔过来一个配置文件让我导入,说是标准JSON,结果我一粘到 jsonlint 就提示“逗号结尾非法”。改完再试,终于通了。这种小细节自己看很容易漏,工具扫一下比啥都快。

别等到上线才发现数据有问题

现在我们项目里加了自动化步骤,每次构建时跑一遍 mock 数据的校验脚本。只要接口定义变了,但测试数据没跟着改,就会报警。虽然多花了几分钟,但避免了半夜被线上异常打醒的惨剧。

说到底,JSON数据校验工具不是炫技,是给自己留条后路。谁都有手滑的时候,让机器早点发现问题,总比用户先发现强。