我正在使用JSON Schema来验证数据。
我认为使用保留关键字$ id可能会在我的架构上出错。该字段的目的是指定另一个平台上属性的REMOTE ID。所以这是“原产地ID”。
你能告诉我们$ id是什么,如果我犯了一个严重错误,这个价值需要改变。因为在文档中我找到了这个定义:
如果存在,则此关键字的值必须是字符串,并且必须表示有效的URI引用[RFC3986]。该值应该被标准化,并且不应该是空片段<#>或空字符串<>。
答案 0 :(得分:6)
$ id是保留关键字。
它用于:
您可以使用$ id标识模式或模式的一部分(子模式),然后可以使用$ ref关键字在其他地方重用它。看到这个的最简单方法是,$ ref将被具有相应id的模式替换。
答案 1 :(得分:3)
由于$ id更改了架构的基本URI,因此将以不同方式解析同一架构或其任何子架构中的任何$ ref值。
例如,如果您的基本URI是“https://example.com/thing” 你有这个架构
{
"allOf": [
{"$ref": "foo"},
{
"$id": "stuff/and/nonsense",
"allOf": {"$ref": "bar"}
}
]
}
然后“$ ref”到“foo”解析为“https://example.com/foo”。但“$ ref”到“bar”解析为“https://example.com/stuff/and/bar”
因此无论你将“$ id”用于其他目的,都可能会导致问题,尤其是“$ ref”解决方案。