Как с помощью теста извлечь определенные c значения из ответа JSON в Postman? - PullRequest
0 голосов
/ 06 августа 2020

Мне нужно иметь возможность проанализировать результаты JSON ответа Postman, чтобы просто вытащить значение name из вывода консоли. Мой JSON выглядит так:

"total_count": 7,
"entries": [
    {
        "type": "collaboration",
        "id": "21829111111",
        "created_by": null,
        "created_at": "2020-03-24T05:37:09-07:00",
        "modified_at": "2020-03-24T05:37:09-07:00",
        "expires_at": null,
        "status": "accepted",
        "accessible_by": {
            "type": "group",
            "id": "3085402",
            "name": "Test",
            "group_type": "managed_group"

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

Я использовал этот код, чтобы сделать что-то похожее, но я не уверен, как изменить его для нас с помощью следующих данных:

var response = JSON.parse(responseBody);
var usernames = response.map(function(account){
    return account.credentials.userName;
});
console.log(usernames);

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 06 августа 2020

Давайте пройдемся по нему:

var response = JSON.parse(responseBody);

JSON.parse() принимает ответ JSON в виде строки и преобразует его в объект JS, который будет затем сохраняется в response.

response.map(...)

Функция map() вызывается в массиве и принимает функцию в качестве параметра. Он вызывает функцию, которую вы предоставляете, один раз для каждого элемента в массиве, который он вызвал.

Для вашего конкретного случая нам нужно немного изменить это, поскольку response является объектом, а не массив, а значение, которое вам нужно, name, вложено в массив entries внутри response. Чтобы учесть это, мы собираемся вызвать map() непосредственно во вложенном массиве и установить его равным новой переменной для сохранения результата, например:

var names = response.entries.map(...);

Теперь мы можем передать map() функция, которая будет извлекать имя из каждого элемента в массиве записей. Наша функция должна принять элемент массива в качестве параметра и вернуть извлеченное имя, чтобы map() мог добавить его в новый создаваемый массив.

function(entry) {
  return entry.accessible_by.name;
}

В итоге мы получаем это :

var response = JSON.parse(responseBody);

var names = response.entries.map(function(entry) {
  return entry.accessible_by.name;
});

console.log(names);

Это выведет массив имен в консоль вашего браузера. ["Test", ...]

Бонус: с небольшим JavaScript синтаксисом c сахаром (в частности, стрелочными функциями ), мы можем сделать код функции немного чище:

var response = JSON.parse(responseBody);

var names = reponse.entries.map(entry => entry.accessible_by.name);

console.log(names);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...