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

Draft-04 JSON Schema数组校验问题:允许$ref与null值

JSON Schema Draft-04 数组元素兼容$ref类型与null的修复方案

问题背景

基于JSON Schema Draft-04编写的Schema中,要求EmploymentHistories数组的元素既可以是$ref引用的TextType类型,也可以是null,但当前Schema无法通过包含引用对象与null的实例校验,报错提示null值不被允许。

当前Schema

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "version": "4.4.0",
    "title": "myCollection",
    "description": "Resume/CV",
    "type": "object",
    "properties": {
        "EmploymentHistories": {
            "type": "array",
            "items": {
                "oneOf": [
                    {
                        "$ref": "../../../Common/json/base/TextType.json#"
                    },
                    {
                        "enum": [
                            null
                        ]
                    }
                ]
            },
            "additionalProperties": false
        }
    }
}

期望校验实例

{
    "EmploymentHistories": [
        {
            "value": "String",
            "languageCode": "aa"
        },
        {
            "value": "String",
            "languageCode": "aa"
        },
        null,
        null
    ]
}

错误信息

文件D:\Dev\Proj\Recruiting\json\resumecv\samples\Untitled5.json无效。此处不允许null类型的值,原因是必须为以下类型之一:'string'、'object'。错误位置:EmploymentHistories / 3、EmploymentHistories / 4,对应数组项2、3无效。

修复方案

在Draft-04中,null是原生数据类型,将items.oneOf中定义null的分支从enum: [null]替换为type: "null",即可让校验器正确识别允许null值的规则。

修改后的完整Schema

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "version": "4.4.0",
    "title": "myCollection",
    "description": "Resume/CV",
    "type": "object",
    "properties": {
        "EmploymentHistories": {
            "type": "array",
            "items": {
                "oneOf": [
                    {
                        "$ref": "../../../Common/json/base/TextType.json#"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "additionalProperties": false
        }
    }
}

验证说明

修改后的Schema可正确校验目标实例,数组中的TextType对象与null值均会被判定为合法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:15:34