Значение json имеет несколько типов данных (json-shema) - PullRequest
1 голос
/ 19 июня 2019

У меня вопрос по поводу json-схемы на каратедсле .. Например, у меня есть json, и один из ключей json имеет несколько типов данных (например, это может быть #string или #object) Как проверить JSON, которые имеют несколько типов данных на karatedsl ??

Пример # строки:

{
  "customer_id":"081234562002",
  "order_id":"",
  "amount":20700,
  "price":20700,
  "created":1560684244,
  "changed":1560684246,
  "data":"Internal Server Error"
}

Пример #объект:

{
  "customer_id":"081234562002",
  "order_id":"",
  "amount":20700,
  "price":20700,
  "created":1560684244,
  "changed":1560684246,
  "data":
   {"message": "Internal Server Error"}
}

И я выделил json-файл для проверки json выше, вот так:

{
  "customer_id":"#string",
  "order_id":"#string",
  "amount":"#number",
  "price":"#number",
  "created":"#number",
  "changed":"#number",
  "data":"???"
}

1 Ответ

2 голосов
/ 19 июня 2019

В каратэ есть несколько вариантов, я могу привести один быстрый пример,

* match response.myKey == "#? karate.match(_,'#string').pass || karate.match(_,'#object').pass"

, так как нам нужны маркеры, такие как #string Мне нужно использовать karate.match.Вы можете написать любую функцию, возвращающую логическое значение, и использовать ее здесь в качестве замены.

чтение нечеткое совпадение , Выражение самопроверки , Проверка схемы из документов по каратэ

Редактировать: для обновленного вопроса

заменить ??? на

"#? karate.match(_,'Internal Server Error').pass || karate.match(_,{'message' :'Internal Server Error'} ).pass"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...