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

JSON Schema子目录组件$ref引用路径规范确认

JSON Schema子目录组件$ref路径取值方案解答

核心结论

选择方案2,message.schema.json中直接写"$ref": "key.schema.json"和"$ref": "data.schema.json"即可。

判定依据

JSON Schema规范中,相对路径格式的$ref,解析基准是包含该$ref的Schema文件本身的加载URI,而非引用它的父级Schema文件的路径:

  • 你的main.schema.json加载路径为[项目根目录]/main.schema.json,其中"$ref": "components/message.schema.json"会被解析为[项目根目录]/components/message.schema.json,可正确加载目标文件
  • 当message.schema.json被加载时,它的基准路径就是[项目根目录]/components/,同目录下的文件直接写文件名即可,解析后路径为[项目根目录]/components/key.schema.json,完全匹配文件结构
  • 如果选择方案1,路径会被解析为[项目根目录]/components/components/key.schema.json,多了一层components目录,会出现文件找不到的错误。

补充注意事项

你当前所有Schema文件都配置了相同的$id值,这是错误配置:$id是单个Schema的唯一标识,重复值会导致解析器缓存冲突,如果你不需要通过$id指定基础URI,直接删除所有文件中的$id字段即可,不会影响相对路径的解析逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:03