最可靠轻量的JSON校验方式是用JSON.parse()捕获异常:成功解析即语法合法,抛出SyntaxError即非法;再结合JSON Schema校验结构语义,如类型、必填项等;辅以VS Code、jsonlint等工具提升效率,并避免正则匹配等常见陷阱。

直接用 JSON.parse() 尝试解析,捕获异常即可完成基础校验——这是最可靠、最轻量、也最符合 JSON 语义的本地校验方式。
用 JSON.parse() 做基础语法校验
JSON 格式本质是文本,但必须严格满足语法规范。浏览器原生的 JSON.parse() 就是专为此设计的解析器,它能准确识别所有非法结构(如单引号、尾随逗号、undefined、注释、未转义控制字符等)。
- 成功解析 = 语法合法;抛出
SyntaxError= 非法 JSON - 无需正则匹配,避免嵌套括号、引号配对等复杂逻辑误判
- 代码简洁:
try { JSON.parse(input); return true; } catch { return false; }
用 JSON Schema 做结构与语义校验
仅语法正确还不够。比如 {"age": "25"} 是合法 JSON,但业务上可能要求 age 必须是整数。这时需引入 JSON Schema 进行深度校验。
- 定义字段类型(
type: "integer")、必填项("required": ["name"])、范围("minimum": 0)、格式("format": "email")等 - 前端可用 AJV 等轻量库加载 schema 并验证数据实例
- 校验结果不仅返回 true/false,还能提供具体错误路径和原因(如
"data.age should be integer")
借助编辑器或 CLI 工具辅助开发
日常调试和批量检查时,可结合工具提升效率:
立即学习“Java免费学习笔记(深入)”;
- VS Code:打开 .json 文件自动高亮语法错误(如键名没加双引号、缺逗号),配合插件“JSON Tools”支持 Schema 关联提示
-
jsonlint-cli:命令行运行
jsonlint your.json,快速反馈错误位置和原因,适合集成进 pre-commit 脚本 - 在线 JSONLint(jsonlint.com):粘贴即校验 + 格式化,适合临时查错,不建议用于含敏感数据的场景
避免常见陷阱
前端校验容易忽略的细节,直接影响健壮性:
- 不要用正则粗略匹配(如
/^{.*}$/),它无法处理嵌套对象、转义引号、空格容错等真实情况 - 注意
null、"null"、""、undefined的区别——JSON 只允许null,其余都是非法或语义错误 - 用户输入可能带 BOM 或不可见控制字符,建议先
input.trim()再解析 - 校验失败时,给出明确提示(如“JSON 格式错误,请检查第 X 行”),而不是只显示“无效数据”


















