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

JSON Schema中$id与$anchor的区别是什么?

$id 和 $anchor 的核心区别

  • 定位性质不一样:$id是给子模式分配一个独立的URI(哪怕是相对路径),相当于给这个子模式单独开了个“身份地址”。比如例子里的"$id": "insect",会结合父级$id生成完整地址http://www.example.com/insect,其他外部Schema文档也能通过这个地址直接引用它;而$anchor只是当前文档内的一个锚点,依附于当前文档的$id,完整引用地址是http://www.example.com/schema#insect,只能在当前文档或者引用整个文档的地方通过锚点定位。

  • 影响路径解析的方式不同:如果子模式用了$id,后续子模式里的相对路径引用(比如$ref)都会以这个$id为基础解析;而$anchor不会改变基础路径,所有相对引用还是跟着最顶层或者父级的$id走。

  • 适用场景有差异:要是你的子模式需要被外部其他Schema独立引用,或者得有自己专属的身份标识,就用$id;如果只是在当前Schema内部复用某段规则,$anchor更轻量,就是个文档内的“书签”,不会额外创建新的命名空间。

  • 唯一性要求不同:$id在整个Schema的URI空间里必须全局唯一,不能有两个不同Schema用同一个$id;而$anchor只需要在它所属的$id命名空间内唯一就行,不同文档里可以重名,因为加上文档地址后的完整引用是不一样的。


内容的提问来源于stack exchange,提问作者Roger Costello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:07:49