Rails API中的值数组的JSON模式

时间:2014-06-27 00:51:38

标签: json jsonschema

我会变得扁平化:JSON Schema的文档很糟糕。如果有人可以引导我找到另外显示的链接,我很乐意看一看并可能改变我的观点。

我花了3个多小时尝试获取以下非常简单的请求/响应的JSON Schema:

当某人点击/api/v1/payers?term=uni&max_results=6后,他们得到的结果是:

[
        {
           "label" : "United",
           "value" : "161a016e-8d06-49b9-9ddb-6bdbde248bcc"
        },
        {
           "label" : "United Healthcare",
           "value" : "1610426e-8de6-49b9-9ddb-6bfawf8bccew"
        }
]

我有目录docs/schema/schematapayer.json中是否有schemata详细说明了一位付款人?即:

{
    "label" : "United",
    "value" : "161a016e-8d06-49b9-9ddb-6bdbde248bcc"
}

然后我在哪里定义数组?那会在schema.json文件夹中的schema吗?或者......我应该在payers.json中有一个schemata。我还使用了prmd gem。

我在网上看到的任何内容都没有让我得到答案。

1 个答案:

答案 0 :(得分:1)

要指定项目列表,您的架构应该说:

{
    "type": "array",
    "items": {... item schema ...}
}

您可以将项目架构放在“items”属性中:

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {...},
        "required": ["label", "value"]
    }
}

或者您可以将其存储在其他位置并使用$ref

引用它
{
    "type": "array",
    "items": {"$ref": "#/definitions/payer"},
    "definitions": {
        "payer": {
            "type": "object",
            ...
        }
    }
}

您还可以引用其他模式,以便将付款方模式存储在单独的目录中:

// payer-array.json
{
    "type": "array",
    "items": {"$ref": "/schemas/payers.json"
}

// payers.json
{
    "type": "object",
    ...
}

因此,简而言之:对模式的存储位置没有限制等等。重要的是,如果您使用$ref,它会正确解析为相对URL。