JSON-схема объекта внутри массива - PullRequest
3 голосов
/ 11 октября 2019

Я пытаюсь написать схему json, чтобы использовать ее для проверки ответа в Почтальон . У меня такое ощущение, что я почти на месте, но упускаю что-то очевидное.

Я проверил Q&A на stackoverflow, эту страницу и все остальное, что появилось в Google при поиске объекта схемы json внутри массива

Я связываю 2 фрагмента кода:

  1. Требуется ли исправить моя схема
  2. Это ответ, который я пытаюсь проверить с помощью схемы.

Примечание: почтальон принимает схему, но когда я намеренно делаю ошибку ("type": "number", когда в ответе есть строка), тест в Postman просто проходит, как будто всехорошо. Я ожидаю, что тест не пройден.

Схема:

const resultaatSchema = {
"type": "object",
"properties": {
    "InputParameters": {"type": "object"},
    "Resultaat": {"type": "array",
    "items": {
        "Bedrijfsnaam": {"type": "number"},
        "Winkel": {"type": "string"},
        "Kvknummer": {"type": "string"},
        "Accountmanager": {"type": "object"},
        "Eigenaar": {"type": "object",
        "properties": {
            "Naam": {"type": "string"},
            "EmailAdres": {"type": "string"},
            "RegionaleUnive": {"type": "object",
            "properties": {
                "Naam": {"type": "string"},
                "Nummer": {"type": "number"}
                }
            }
           }
        }
      }
     }
    }

};

Ответ для проверки

{
"InputParameters": {
    "ZoekWaardes": [
        "Z-000168378"
    ]
},
"Resultaat": [
    {
        "Bedrijfsnaam": "Companyname",
        "Winkel": "City",
        "Kvknummer": "08129882",
        "AccountManager": {
            "Gebruikersnaam": "Somename",
            "EmailAdres": "some.mail@address.nl"
        },
        "Eigenaar": {
            "Naam": "aName",
            "EmailAdres": null,
            "RegionaleUnive": {
                "Naam": "anotherName",
                "Nummer": 1111
            }
        },
        "Website": null,
        "EmailAdressen": [
            {
                "TypeId": 1,
                "Type": "Primair",
                "Adres": "mail@address.nl"
            },
            {
                "TypeId": 2,
                "Type": "Secundair",
                "Adres": "mail@addres2.nl"
            }
        ],
        "Telefoonnummers": [
            {
                "TypeId": 2,
                "Type": "Vast",
                "Nummer": "+31623568744",
                "Geheim": false
            },
            {
                "TypeId": 3,
                "Type": "Mobiel",
                "Nummer": "+31623568744",
                "Geheim": false
            }
        ],
        "Addressen": [
            {
                "TypeId": 2,
                "Type": "Bezoek",
                "Straat": "Streetname",
                "Huisnummer": "1",
                "HuisnummerToevoeging": null,
                "Postcode": "postalcode",
                "Woonplaats": "City",
                "Provincie": "province",
                "LandCode": "NL",
                "Geheim": false
            },
            {
                "TypeId": 3,
                "Type": "Post",
                "Straat": "addresline1",
                "Huisnummer": "addresline2",
                "HuisnummerToevoeging": null,
                "Postcode": "postalcode",
                "Woonplaats": "City",
                "Provincie": "Province",
                "LandCode": "XX",
                "Geheim": false
            }
        ],
        "Id": "9bba2277-8536-e911-8109-0050568803e2",
        "CrmRelatieNummer": "Z-000168378",
        "URN": null
    }
]

}

1 Ответ

0 голосов
/ 11 октября 2019

Ваше ключевое слово схемы "items" не является допустимой схемой. Значением элементов должна быть либо схема, либо массив схем. В случае одной схемы все элементы массива проверяются на соответствие этой схеме. В случае массива элементы проверяются в соответствии с их позициями.

Просто добавили комментарий также в качестве ответа, чтобы другие люди могли его быстро увидеть.

...