Как мне проверить динамический ключ JSON?

#json #karate

#json #каратэ

Вопрос:

     {
    "id": "aghysfgagaw365",
    "MetricLevelId": "4890718305",
    "level": "BUB",
    "type": "Mash",
    "summary": {
    "counts": [
    {},
    {
    "label": {},
    "value": 2674,
    "labelLoc": {
    "192706": {
    "ADD": 8977,
    "DEL": 3257,
    "Count": 59
    },
    "543419": {
    "ADD": 0,
    "DEL": 0,
    "Count": 1
         }
      }
     }
    ]
   }
  }
  

Я прочитал документацию, но мне все еще неясно, как проверять сложные API, подобные этому. демонстрация для проверки этого API помогла бы мне решить другие проверки API … особенно у этого есть динамический ключ JSON.как мне проверить ADD, DEL и Cont, если «192706» является динамическим.

Ответ №1:

Из документации, пожалуйста, обратитесь к документации по JSONPath. Также рекомендуется раздел «Преобразования JSON». Вот один из способов:

 * def response =
"""
{
   "id": "aghysfgagaw365",
   "MetricLevelId": "4890718305",
   "level": "BUB",
   "type": "Mash",
   "summary": {
      "counts": [
         {

         },
         {
            "value": 2674,
            "labelLoc": {
               "192706": {
                  "ADD": 8977,
                  "DEL": 3257,
                  "Count": 59
               },
               "543419": {
                  "ADD": 0,
                  "DEL": 0,
                  "Count": 1
               }
            }
         }
      ]
   }
}
"""
* def label = get[0] response..labelLoc
* def vals = get label.*
* match each vals == { ADD: '#number', DEL: '#number', Count: '#number' }
  

РЕДАКТИРОВАТЬ также это будет работать:

 * json keys = label.keySet()
* match keys == ['192706', '543419']
  

Комментарии:

1. Это помогло бы мне, Томас. Спасибо!

2. ‘192706’, ‘543419’ не являются статическими, они будут меняться каждый час, но я надеюсь, что смогу использовать #number там.