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

如何验证字典所有值符合JSON Schema?有无更优方案替代全匹配模式?

更优实现方式:使用additionalProperties

当你需要验证对象中所有属性值都符合指定Schema、对键无限制时,最简洁且直观的方案是使用additionalProperties,而非patternProperties配合全匹配正则。

优化后的示例代码

"foo": {
    "type": "object",
    "additionalProperties": {
        "$ref": "#/$defs/bar"
    }
}

为什么这更优?

  • 写法简洁:无需编写^.*$这种全匹配正则,直接通过additionalProperties指定所有属性值的约束规则,语义更清晰。
  • 性能更优:避免了正则匹配的额外开销(虽然对于简单正则影响极小,但在大规模数据验证场景下仍有收益)。
  • 符合JSON Schema设计意图:additionalProperties的核心用途之一就是约束未被properties或patternProperties匹配到的属性;当你没有定义任何properties或patternProperties时,它会自动应用到所有属性,完美契合你的需求。

注意事项

如果后续需要对部分特定键设置特殊验证规则,可以结合properties或patternProperties使用:

"foo": {
    "type": "object",
    // 对特定键"specialKey"设置单独规则
    "properties": {
        "specialKey": { "type": "string" }
    },
    // 其余所有键的值必须符合bar的Schema
    "additionalProperties": { "$ref": "#/$defs/bar" }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:45:31