You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON Schema如何校验非必填属性的拼写错误

JSON Schema非必填属性名拼写错误校验方法

要捕获非必填属性的拼写错误,核心是限制JSON对象只能使用Schema中已经声明过的属性,具体实现方案如下:

基础方案:直接拦截未声明属性

在Schema的对象定义中添加additionalProperties: false字段即可,该字段的作用是禁止出现properties列表中没有声明的属性,不管属性是否为必填项,只要未在Schema中定义就会触发校验错误。

修改后的完整示例Schema如下:

{
  "$id": "https://example.com/person.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Person",
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string",
      "description": "The person's first name."
    },
    "lastName": {
      "type": "string",
      "description": "The person's last name."
    },
    "age": {
      "description": "Age in years which must be equal to or greater than zero.",
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}

用上述Schema校验你给出的测试JSON时,会直接返回不允许存在额外属性"aged"类的报错,直接定位拼写错误。

注意:如果你的Schema中使用了patternProperties匹配动态属性名,将additionalProperties替换为unevaluatedProperties: false即可实现相同效果。

进阶方案:允许额外属性+拼写错误提示

如果业务场景需要允许未声明的额外属性存在,依然要提示可能的拼写错误,可以借助主流JSON Schema校验库(如Ajv)的扩展能力:在校验逻辑中添加相似度匹配规则,将未声明的属性名和已声明的属性名做匹配(常用莱文斯坦距离计算相似度),相似度高于阈值时就输出拼写错误提示,比如检测到aged和已定义的age相似度很高,就会提示你输入的"aged"可能是拼写错误,是否为"age"?。

内容的提问来源于stack exchange,提问作者satish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:06:04