如何在 NJsonSchema c# 中使用 json 模式验证 json

How to validate json with json schema in NJsonSchema c#

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

Json-文件中的架构如下

{
        '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。

Disclaimer: I'm the author of Manatee.Json.

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

JSON 架构目前在 draft-07draft-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 自述文件中有 link。