Почтальон: Получить значения массива из массива JSON и установить их как переменные почтальона. - PullRequest
1 голос
/ 12 марта 2019

У меня тот же вопрос, что и у этого

Почтальон получает значения из массива и устанавливает его динамически для переменных env

Но я не могу понять, какизменить метод лучшего ответа для себя.

JSON:

{
"meta": {
    "code": 200,
    "requestId": "5c871f361ed2196e43a00982"
},
"response": {
    "venues": [
        {
            "id": "536e7cac498ea9201478f0bb",
            "name": "Yeni Camii Alımyeri 1",
            "location": {
                "lat": 41.06841467513242,
                "lng": 40.69481069825992,
                "labeledLatLngs": [
                    {
                        "label": "display",
                        "lat": 41.06841467513242,
                        "lng": 40.69481069825992
                    }
                ],
                "distance": 60953,
                "cc": "TR",
                "country": "Türkiye",
                "formattedAddress": [
                    "Türkiye"
                ]
            },
            "categories": [
                {
                    "id": "530e33ccbcbc57f1066bbff3",
                    "name": "Town",
                    "pluralName": "Towns",
                    "shortName": "Town",
                    "icon": {
                        "prefix": "https://ss3.4sqi.net/img/categories_v2/parks_outdoors/neighborhood_",
                        "suffix": ".png"
                    },
                    "primary": true
                }
            ],
            "referralId": "v-1552359222",
            "hasPerk": false
        },
        {
            "id": "5a22b75566611634a15d1f68",
            "name": "Osmançavuş Mah.",
            "location": {
                "lat": 40.714043,
                "lng": 41.209717,
                "labeledLatLngs": [
                    {
                        "label": "display",
                        "lat": 40.714043,
                        "lng": 41.209717
                    }
                ],
                "distance": 64990,
                "cc": "TR",
                "city": "Erzurum",
                "country": "Türkiye",
                "formattedAddress": [
                    "Erzurum",
                    "Türkiye"
                ]
            },
            "categories": [
                {
                    "id": "530e33ccbcbc57f1066bbff3",
                    "name": "Town",
                    "pluralName": "Towns",
                    "shortName": "Town",
                    "icon": {
                        "prefix": "https://ss3.4sqi.net/img/categories_v2/parks_outdoors/neighborhood_",
                        "suffix": ".png"
                    },
                    "primary": true
                }
            ],
            "referralId": "v-1552359222",
            "hasPerk": false
        },
        {
            "id": "55e0acd1498e06a1c0bd34ca",
            "name": "Ören Beldesi",
            "location": {
                "lat": 41.17862276665214,
                "lng": 40.886770827531386,
                "labeledLatLngs": [
                    {
                        "label": "display",
                        "lat": 41.17862276665214,
                        "lng": 40.886770827531386
                    }
                ],
                "distance": 78451,
                "cc": "TR",
                "country": "Türkiye",
                "formattedAddress": [
                    "Türkiye"
                ]
            },
            "categories": [
                {
                    "id": "530e33ccbcbc57f1066bbff3",
                    "name": "Town",
                    "pluralName": "Towns",
                    "shortName": "Town",
                    "icon": {
                        "prefix": "https://ss3.4sqi.net/img/categories_v2/parks_outdoors/neighborhood_",
                        "suffix": ".png"
                    },
                    "primary": true
                }
            ],
            "referralId": "v-1552359222",
            "hasPerk": false
        },
        {
            "id": "53e33833498ec6568c338076",
            "name": "Mapsino Köy Çıkışı",
            "location": {
                "lat": 40.81617736816406,
                "lng": 40.26142501831055,
                "labeledLatLngs": [
                    {
                        "label": "display",
                        "lat": 40.81617736816406,
                        "lng": 40.26142501831055
                    }
                ],
                "distance": 34825,
                "cc": "TR",
                "country": "Türkiye",
                "formattedAddress": [
                    "Türkiye"
                ]
            },
            "categories": [
                {
                    "id": "530e33ccbcbc57f1066bbff3",
                    "name": "Town",
                    "pluralName": "Towns",
                    "shortName": "Town",
                    "icon": {
                        "prefix": "https://ss3.4sqi.net/img/categories_v2/parks_outdoors/neighborhood_",
                        "suffix": ".png"
                    },
                    "primary": true
                }
            ],
            "referralId": "v-1552359222",
            "hasPerk": false
        }
    ],
    "confident": false
}

Я пытаюсь получить значение response.venues.id, и иногда мне приходится создавать 29 переменныхвручную.

Если кто-то может показать мне, как редактировать этот код для работы с моим ответом JSON, это было бы здорово.

let idCount = 1
let nameCount = 1
let typeCount = 1
_.each(_.first(pm.response.json()).variables, (arrItem) => {
pm.environment.set(`varID${idCount ++}`,  arrItem.id);
pm.environment.set(`varName${nameCount ++}`, arrItem.name);
pm.environment.set(`varType${typeCount ++}`, arrItem.type);

})

1 Ответ

3 голосов
/ 12 марта 2019

Вы можете заменить существующий скрипт следующим:

let responseBody = pm.response.json(),
  venues = _.get(responseBody, 'response.venues');

_.forEach(venues, (venue, index) => {
    pm.environment.set(`varID${++index}`,  venue.id);
});

Это будет хранить все ваши идентификаторы как переменные в среде, которая будет отображаться так: Environment variables

Пояснение:

Во-первых, мы получаем venues из вашего тела ответа, чтобы легко выполнить цикл по нему. Затем мы просто запускаем простой цикл forEach над элементами в массиве и сохраняем соответствующий идентификатор каждого элемента массива в переменной среды.

Мы используем lodash library для таких функций, как _.get and _.forEach, встроенных в почтальон.

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