Как проверить JSON с помощью схемы JSON в NJsonSchema C#

В рамках контрактных тестов я должен проверить ответ json, полученный от 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'}

Может кто-нибудь, пожалуйста, пролить свет (с примерами) на то, как проверить JSON с JSonschema, используя NJsonSchema или Manatee.Json.

1 ответ

Отказ от ответственности: я автор Manatee.Json.

Это выглядит как схема проекта-03 (required ключевое слово было удалено из декларации свойства в draft-04). Я не уверен, поддерживает ли NJsonSchema старые схемы; Ламантин.Джон нет.

Схема JSON в настоящее время находится на черновике-07, а черновик-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 readme.

Другие вопросы по тегам