24

我正在尝试使用带有 Liquid Studio 2017 的“$ref”来引用位于不同文件中的 JSON 模式。引用的 JSON 模式和引用的 JSON 模式都位于同一目录中。

我尝试使用相对路径:

"$ref": "referredSchema.json/propertyName"

并使用绝对路径:

"$ref": "file:///C:/JSON/referredSchema.json/propertyName"
"$ref": "file:///JSON/referredSchema.json/propertyName"
"$ref": "file:///JSON/referredSchema.json#/propertyName"

和其他一些变化。它们都不起作用,我总是收到一条错误消息“无效的 URI”。此外,文档仅提到可以引用其他文档,而没有给出合理的示例。

所以我想知道,预期的 URI 格式是什么。

4

1 回答 1

25

您可以使用 $ref 属性引用在本地文件或外部文件中定义的模式。

您遇到的问题是片段部分(# 之后的位)。这引用了根模式的定义属性中的模式。

以下示例应显示如何对本地文件和外部文件执行此操作

主要.json

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "ReferenceToLocalSchema": {
            "$ref": "#/definitions/LocalType"
        },
        "ReferenceToExternalSchema": {
            "$ref": "Common.json#/definitions/ExternalType"
        }
    },
    "definitions": {
        "LocalType": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "no-write": {
                    "type": "boolean",
                    "default": false
                }
            }
        }
    }
}

JSON模式图

Common.json

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "additionalProperties": false,
    "definitions": {
        "ExternalType": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "src": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "minLength": 1
                    }
                }
            },
            "required": [
                "src"
            ]
        }
    }
}

JSON模式图

注意对本地模式的引用

"$ref": "#/definitions/LocalType"

和远程模式

"$ref": "Common.json#/definitions/ExternalType"

我已经用相对 url 展示了这个,但它可能是一个完全限定的 url

"$ref": "file:///Common.json#/definitions/ExternalType"

需要注意的一件事。目前,UI 中显示的可能选项列表将仅显示本地文件中定义的定义。必须在代码视图中输入对外部文件的引用。

在此处输入图像描述

如果您仍有疑问,请将架构添加到问题中。

于 2017-03-24T14:19:10.557 回答