REST Гарантированное получение значений карты только из тела ответа

Представьте, что я вызвал службу RESTful, и она возвращает это в теле ответа

[
  {
    "key": "Reason1 key",
    "values": {
      "en": "Reason1 English translation",
      "es": "Reason1 Spanish translation"
    }
  },
  {
    "key": "Reason2 key",
    "values": {
      "en": "Reason2 English translation",
      "es": "Reason2 Spanish translation"
    }
  }
]

Мне нужно получить только значения, ключ карты которых - en

Итак, я ожидаю, что результат будет таким после фильтрации

["Reason1 английский перевод", "Reason2 английский перевод"]

OR

{"Reason1 English translation", "Reason2 English translation"}

Я попробовал этот следующий код, но все еще не завершил

response.then().body("findAll { it }.collect { it.values }", hasItems("Reason1 English translation", "Reason2 English translation"))

и он возвращается

[{en = Английский перевод Reason1, es = Испанский перевод Reason1}, {en = Английский перевод Reason2, es = Испанский перевод Reason2}]

Итак, как я могу получить только значения карты, которые соответствуют ключевому условию карты равенства 'en'?


person mibrahim.iti    schedule 21.08.2017    source источник


Ответы (1)


Изменения в ....body("findAll { it }.collect { it.values.en }"

Добавьте en, чтобы получить en узлы, а не весь values узел.

person aristotll    schedule 22.08.2017
comment
Очень просто :) Я работал над ним как с картой с ключом и значением, поэтому я пытался .collect {it.values.key}, и поэтому у меня не получилось, но теперь он работает, поскольку он просто работает с JSON, а не с объектом Java . (Спасибо) - person mibrahim.iti; 22.08.2017