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

JavaScript编写JSON Schema如何定义布尔或null类型的OR校验规则

JSON Schema 多类型OR逻辑正确写法

两种错误写法的问题

  • 重复声明同名字段:JavaScript对象中同名属性会以后面的声明为准,第一种写法最终default_show的规则只有type: null,传入布尔值自然会触发校验失败。
  • 使用||拼接类型:JS中'boolean' || null会直接返回第一个真值'boolean',等价于只配置了布尔类型;同时JSON Schema本身的语法规则也不支持用JS逻辑运算符拼接类型值。

正确实现方案

JSON Schema 原生支持通过给type字段传入类型数组的方式,实现单字段允许多种类型的OR校验逻辑,注意null类型对应的规则值为字符串'null',不是JS原生的null值。
修正后的Schema代码如下:

const CheckSchema = {
    title: 'Check Schema',
    type: 'object',
    required: ['id', 'name', 'description', 'wanted'],
    properties: {
        id: { type: 'integer' }, // 按实际业务补全其余必填字段的类型规则
        name: { type: 'string' },
        description: { type: 'string' },
        wanted: { type: 'string' },
        default_show: {
            type: ['boolean', 'null'] // 数组内列出所有允许的类型即可
        }
    }
};

补充说明:该写法符合JSON Schema draft-6及以上版本规范,Ajv等主流校验库均原生支持,配置完成后传入布尔值true/false或null均可通过校验,传入字符串、数字、对象等其他类型时会正常触发校验错误,可直接配合Mocha+Chai的单元测试用例使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:45:39