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

如何为string | Record<string, unknown>编写JSON Schema校验规则

问题:匹配string | Record<string, unknown>类型的JSON Schema规则怎么写?

当前我的JSON Schema中对ApplicationContent的校验规则是:

"ApplicationContent": {
    "type": "string",
    "pattern": ".+"
},

而NodeJS代码里定义的类型是:

applicationContent: string | Record<string, unknown>;

请问该如何编写对应的JSON Schema校验规则来验证applicationContent变量?


解决方案

使用JSON Schema的oneOf关键字实现联合类型的校验逻辑,同时保留原字符串的校验规则,再添加对象类型的校验:

"ApplicationContent": {
    "oneOf": [
        {
            "type": "string",
            "pattern": ".+"
        },
        {
            "type": "object",
            "additionalProperties": true
        }
    ]
},

规则说明

  • oneOf要求校验对象必须匹配数组中恰好一个子规则,对应TypeScript的|联合类型
  • 第一个子规则保留原有字符串校验逻辑:确保是至少包含一个字符的非空字符串
  • 第二个子规则匹配任意结构的对象:type: "object"指定类型为对象,additionalProperties: true允许对象包含任意属性,完美对应Record<string, unknown>类型

如果需要限制对象的属性范围(比如必须包含特定字段、禁止额外属性),可以调整对象规则,例如:

{
    "type": "object",
    "required": ["requiredKey"],
    "properties": {
        "requiredKey": { "type": "string" },
        "optionalKey": { "type": "number" }
    },
    "additionalProperties": false
}

这个规则会要求对象必须包含requiredKey字段,可选包含optionalKey,且不能有其他未定义的属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:42:08