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

