如何为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
相关产品推荐
相关产品推荐

