Подтвержденная проверка каждого элемента в массиве JSON

Учитывая, что у меня есть этот массив JSON:

{
    value: ["000", "111", "345", "987"]
}

Я хочу использовать Rest-assured для проверки формата полей, используя его структуру given / when / then.

given().
    queryParam("myparam", myparamvalue).
when().
    get(callRoot).
then().
    body("value", matchesPattern("[0-9][0-9][0-9]");

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

Я не знаю, сколько значений будет в массиве JSON. Может быть только 1; это могло быть 100.


person John Chambers    schedule 23.12.2016    source источник


Ответы (1)


Вы можете использовать JsonPath и сделать что-то вроде следующего:

given().
    queryParam("myparam", myparamvalue).
when().
    get(callRoot).
then().
  body("value.*", matchesPattern("[0-9][0-9][0-9]");

См. https://github.com/rest-assured/rest-assured/wiki/usage#json-example для получения дополнительных сведений.

Или вы можете извлечь ответ как String, преобразовать его в JSONObject, извлечь JSONArray в поле values, а затем применить регулярное выражение к каждому элементу в массиве:

Response response = given().queryParam("myparam", myparamvalue).when().get(callRoot).

JSONObject responseJson = new JSONObject(response.getBody().asString());
JSONArray values = responseJson.getJSONArray("values");

for(int i = 0; i < values.length(); i++) {
  String value = values.getString(i);
   Assert.assertThat(values, matchesPattern("[0-9][0-9][0-9]"));
}
person Adam    schedule 23.12.2016