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

如何无需正则限制JSON Schema对象为指定属性名且值为布尔类型?

解决方案:指定属性名数组的JSON Schema

完全可以实现你的需求,不用复杂正则,用JSON Schema的properties和additionalProperties关键字就能轻松搞定——既限制属性名只能是你指定的那些,又强制所有属性值为布尔类型。

示例Schema

假设你允许的属性是"client 1"、"client 2"、"dogs"、"cats",对应的Schema如下:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "client 1": { "type": "boolean" },
    "client 2": { "type": "boolean" },
    "dogs": { "type": "boolean" },
    "cats": { "type": "boolean" }
  },
  "additionalProperties": false
}

关键部分说明

  • type: "object":明确校验的是JSON对象类型
  • properties:列出所有允许存在的属性名,每个属性的子Schema指定type: "boolean",确保对应的值只能是true或false
  • additionalProperties: false:严格拒绝任何不在properties列表里的属性,比如输入里出现"birds": true会直接校验失败

可选扩展:必填属性

如果某些属性必须存在,可以加上required数组,比如要求"client 1"必须填写:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "client 1": { "type": "boolean" },
    "client 2": { "type": "boolean" },
    "dogs": { "type": "boolean" },
    "cats": { "type": "boolean" }
  },
  "required": ["client 1"],
  "additionalProperties": false
}

校验效果

  • 合法输入:
{
  "client 1": true,
  "dogs": false
}
  • 非法输入(含未允许的属性):
{
  "client 1": true,
  "birds": true
}

会被拒绝,因为"birds"不在允许的属性列表里。

  • 非法输入(属性值非布尔):
{
  "client 1": "yes",
  "dogs": false
}

会被拒绝,因为"client 1"的值是字符串,不符合布尔类型要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:05:17