做前端开发这几年,最怕的不是写页面,而是接接口。尤其是后端给过来一段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.com 和 jsonschema.net,粘进去立刻高亮错误,还能自动生成 schema 骨架,特别适合快速排查。
有一次产品扔过来一个配置文件让我导入,说是标准JSON,结果我一粘到 jsonlint 就提示“逗号结尾非法”。改完再试,终于通了。这种小细节自己看很容易漏,工具扫一下比啥都快。
别等到上线才发现数据有问题
现在我们项目里加了自动化步骤,每次构建时跑一遍 mock 数据的校验脚本。只要接口定义变了,但测试数据没跟着改,就会报警。虽然多花了几分钟,但避免了半夜被线上异常打醒的惨剧。
说到底,JSON数据校验工具不是炫技,是给自己留条后路。谁都有手滑的时候,让机器早点发现问题,总比用户先发现强。