Как проверить JSON с помощью схемы JSON в NJsonSchema c # - PullRequest
0 голосов
/ 25 мая 2018

В рамках контрактных тестов я должен проверить ответ 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 Ответ

0 голосов
/ 24 ноября 2018

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

Это похоже на схему draft-03 (ключевое слово * 1007 было удаленодекларации о собственности в draft-04 ).Я не уверен, поддерживает ли NJsonSchema старые схемы;Manatee.Json нет.

Схема JSON в настоящее время находится на draft-07 , а draft-08 скоро должна быть выпущена.

MyПредлагаем переписать схему как более позднюю черновую версию, переместив ключевое слово 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 есть ссылка.

...