【问题标题】:How to validate json with json schema in NJsonSchema c#如何在 NJsonSchema c# 中使用 json 模式验证 json
【发布时间】:2018-05-25 08:02:15
【问题描述】:

作为合同测试的一部分,我必须针对文件中存在的 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 进行一些说明(通过示例)。

【问题讨论】:

    标签: c# jsonschema njsonschema


    【解决方案1】:

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

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

    JSON Schema 目前位于 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 自述文件上有一个链接。

    【讨论】:

    • 谢谢@gregsdennis。
    猜你喜欢
    • 2023-02-01
    • 1970-01-01
    • 2018-03-27
    • 2018-06-15
    • 1970-01-01
    • 2015-07-18
    • 2020-12-22
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多