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

JSON Schema propertyNames验证失效求助(Ionic+AJV环境)

解决JSON Schema额外属性验证失效的问题

核心问题

你遇到的additionalProperties: false不生效,本质是Schema层级错误,或是被anyOf/oneOf这类关键字的逻辑覆盖了。结合你的场景,大概率是把additionalProperties放在了错误的层级,导致它没作用到你要限制的目标对象上。

正确的Schema写法

要限制对象仅允许header、footer、color、typeface这几个属性,必须让additionalProperties: false和properties处于同一层级,示例如下:

{
  "type": "object",
  "properties": {
    "header": { "type": "object" },
    "footer": { "type": "object" },
    "color": { "type": "object" },
    "typeface": { "type": "object" }
  },
  "additionalProperties": false
}

常见错误排查

  • 层级错误:如果additionalProperties写在properties内部的子字段下,它只会限制该子字段的额外属性,不会作用于父对象。
  • anyOf/oneOf冲突:如果Schema中使用了anyOf或oneOf,要么在每个分支里都添加additionalProperties: false,要么将该配置提升到包含anyOf的顶层对象层级。
  • AJV配置问题:检查AJV实例是否启用了strict: false这类放宽验证的配置,或是安装了忽略额外属性的插件。

验证测试

用包含额外属性的对象测试:

{
  "header": {},
  "footer": {},
  "jiii": {},
  "juuu": {}
}

此时验证应返回false,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:22:08