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

JSON Schema无法引用同文件夹其他Schema的问题求助

JSON Schema同文件夹引用问题解决

你的问题出在$id格式、$ref路径不匹配,以及冗余的type定义上,以下是具体修正方案:

方案一:相对路径引用(同文件夹推荐用法)

ActionType.json(同文件夹下保存)

{
    "$id": "ActionType", // 简化$id,直接移除也可正常使用
    "title": "ActionType",
    "type": "object",
    "properties": {
        "ActionType": {
            "enum": ["fullLoad", "update", "insert", "delete"]
        }
    },
    "additionalProperties": false,
    "required": ["ActionType"]
}

ERoaming.json(修正$ref并移除冗余定义)

{
    "$id": "ERoaming",
    "title": "ERoaming",
    "type": "object",
    "properties": {
        "ActionType": {
            "$ref": "./ActionType.json" // 同文件夹相对路径,直接写文件名也生效
        }
    },
    "additionalProperties": false,
    "required": ["ActionType"],
    "$defs": {}
}

方案二:匹配$id的绝对引用

若要保留file URI格式的$id,需确保$ref与$id完全对应:

ActionType.json

{
    "$id": "file:///schemas/ActionType", // 修正为标准file URI格式(三个斜杠)
    "title": "ActionType",
    "type": "object",
    "properties": {
        "ActionType": {
            "enum": ["fullLoad", "update", "insert", "delete"]
        }
    },
    "additionalProperties": false,
    "required": ["ActionType"]
}

ERoaming.json

{
    "$id": "file:///schemas/ERoaming",
    "title": "ERoaming",
    "type": "object",
    "properties": {
        "ActionType": {
            "$ref": "file:///schemas/ActionType" // 直接引用对应$id,无需加.json后缀
        }
    },
    "additionalProperties": false,
    "required": ["ActionType"],
    "$defs": {}
}

关键注意事项

  • $ref会覆盖同一层级的其他关键字(比如你之前写的"type":"object"),无需重复定义。
  • 同文件夹下优先用相对路径,可避免file URI的路径歧义。
  • 若移除$id,直接用文件名作为$ref路径也能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:30:57