JSON架构v4中的id属性

时间:2017-03-26 10:25:29

标签: json jsonschema

我正在尝试正确解析更复杂的JSON模式,这些模式都有引用。然而id属性给我带来了很多麻烦,并且我不清楚它是如何从文档中工作的。以下是我仍然没有得到的东西:

  • id属性是否仅限于URI("id": "http://some.site/my/schema.json"),或者一个架构是否有任意ID("id": "foo")?
  • id属性是否分层?如果父模式的标识为foo(我假设ID不仅限于URis)且子项具有bar,那么引用该子项的正确方法是foo/bar?或者ids是完全独立的吗?
  • 有没有办法明确告诉$ref是否通过id引用了一个架构?

1 个答案:

答案 0 :(得分:1)

"$ref"是一个URI。它可以是相对URI或绝对URI。如果它是相对的,那么它将根据父分辨率范围进行解析。如果它是绝对的,那么它不受父范围的影响。

所以考虑到这些,记住

a)它可以是“仲裁ID”,但它将被解释为相对URI

b)是 - 相对URI的解析针对父作用域

c)空"id"将执行该操作

规范没有告诉你的一件事是,如果顶级URI是相对URI,该怎么办 - 它将被解决什么。它可以依赖于实现。

作为一种最佳做法,我建议您在顶级只使用一个set_time_limit(0); echo "Script began: " . date("d-m-Y h:i:s") . "<br>"; do { if (file_exists("test.txt")) { echo "The file was found: " . date("d-m-Y h:i:s") . "<br>"; break; } } while(true); ,并使所有$ refs相对于此(除非您有充分理由以其他方式进行)