1

作为合同测试的一部分,我必须针对文件中存在的 json-schema 验证从 rest-endpoint 获得的 json 响应。我正在使用 NJsonSchema 并且无法执行此操作。

文件中的 Json-schema 如下所示

{
        'type': 'object',
        'properties': {
            'remaining': {
                'type': 'integer',
                'required': true
            },
            'shuffled': {
                'type': 'boolean',
                'required': true
            }
            'success': {
                'type': 'boolean',
                'required': true
            },
            'deck_id': {
                'type': 'string',
                'required': true
            }
        }
    }

我必须验证的 Json 如下所示

{ 'remaining': 52, 'shuffled': true, 'success': true, 'deck_id': 'b5wr0nr5rvk4'}

任何人都可以对如何使用 NJsonSchema 或 Manatee.Json 使用 jsonschema 验证 json 进行一些说明(带有示例)。

4

1 回答 1

1

免责声明:我是 Manatee.Json 的作者。

这看起来像一个draft-03模式(关键字已从draft-04required的属性声明中移出)。我不确定 NJsonSchema 是否支持旧的模式;Manatee.Json 没有。

JSON Schema 目前处于draft-07,而draft-08即将发布。

我的建议是通过将required关键字作为properties. 的值required变成了一个包含所需属性列表的字符串数组。

{
  "type": "object",
  "properties": {
    "remaining": { "type": "integer" },
    "shuffled": { "type": "boolean" },
    "success": { "type": "boolean" },
    "deck_id": { "type": "string" }
  },
  "required": [ "remaining", "shuffled", "success", "deck_id" ]
}

通过这样做,它肯定可以与 Manatee.Json 一起使用,我希望它也可以与 NJsonSchema 一起使用。

如果您有关于使用 Manatee.Json 的具体问题,请在我的 Slack 工作区上联系我。GH 自述文件上有一个链接。

于 2018-11-24T02:24:48.500 回答