Как проверить 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.