数组内的Postman JSON解析响应正文数组

时间:2018-12-14 16:19:35

标签: javascript postman

我有来自API调用的JSON响应

[
    {
        "id": 20599,
        "name": "Deliver",
        "options": [
            {
                "id": 63775,
                "name": "Item",
                "dataType": "SelectMultiOption",
                "required": false,
                "options": [
                    {
                        "id": 426,
                        "name": "Towels"
                    },
                    {
                        "id": 427,
                        "name": "Toothbrush"
                    },
                    {
                        "id": 428,
                        "name": "Pillow"
                    }
                ]
            }
        ]
    }
]

我正在使用此代码获取服务“传递”的ID

var data = JSON.parse(responseBody); 
var loop_count = 0

for (count = 0; count < data.length; count++)
{
    if (data[count].name == "Deliver")
    {
        var job_id = data[count].id;
        postman.setEnvironmentVariable("service_id", job_id);

    }
}

问题是:

  1. 如何从数组“选项”中获取值,我需要获取“ id”: 63775,并将其存储为“ item_id”,将“ name”:“ Item”存储为“ item_name”邮递员变量。
  2. 然后我需要选择记录中嵌套的“选项” “项目”,然后选择选项“名称”:“牙刷”并存储在邮递员中 变量“ svc_optn_optn_name”及其“ id”存储在 “ svc_optn_optn_id”

3 个答案:

答案 0 :(得分:0)

    <`<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.5</version>
</dependency>

答案 1 :(得分:0)

这是解决方案

var data = JSON.parse(responseBody); 
variable named as data
var loop_count = 0

for (count = 0; count < data.length; count++)
{
    if (data[count].name == "Deliver")
    {
        var job_id = data[count].id;
        postman.setEnvironmentVariable("service_id", job_id);
        var job1_name = data[count].options[0].name;
        postman.setEnvironmentVariable("item_name", job1_name);
        var job2_id = data[count].options[0].id;
        postman.setEnvironmentVariable("item_id", job2_id);
        var job3_id = data[count].options[0].options[1].id;
        postman.setEnvironmentVariable("svc_optn_optn_id", job3_id);
        var job4_name = data[count].options[0].options[1].name;
        postman.setEnvironmentVariable("svc_optn_optn_name", job4_name);

    }

答案 2 :(得分:0)

在这里,我用几行代码就您的问题提出自己的建议。我不确定,您将如何使用这些值。我也不知道外部选项数组是否总是有1个或更多。我只是想满足您的问题。

  

如果您有更多疑问或我错了,请询问/评论。

我创建了一个函数getAllPostmanDataFrom(obj),该函数将对象作为参数,即data[count]的值,在其他对象postmanObj中收集必要的信息,并将其返回给调用者。

function getAllPostmanDataFrom(obj) {
    const item_id = obj.options[0].id;
    const item_name = obj.options[0].name;
    const svc_optn_optn_name = obj.options[0].options[1].name;
    const svc_optn_optn_id = obj.options[0].options[1].id;

    const postmanObj = {item_id, item_name, svc_optn_optn_id, svc_optn_optn_name}; // Return object
    return postmanObj;
}

var data = [
    {
        "id": 20599,
        "name": "Deliver",
        "options": [
            {
                "id": 63775,
                "name": "Item",
                "dataType": "SelectMultiOption",
                "required": false,
                "options": [
                    {
                        "id": 426,
                        "name": "Towels"
                    },
                    {
                        "id": 427,
                        "name": "Toothbrush"
                    },
                    {
                        "id": 428,
                        "name": "Pillow"
                    }
                 ]
            }
        ]
    }
]

var count = 0;
var obj = data[count];
var postmanObj = getAllPostmanDataFrom(obj);
//var {item_id, item_name, svc_optn_optn_id} = postmanObj;

console. log(postmanObj) 
/*
console.log(item_id);
console.log(item_name);
console.log(svc_optn_optn_id);
console.log(svc_optn_optn_name);
*/

最后,您可以按以下方式使用 postmanObj 中包含的值:

postman.setEnvironmentVariable("item_id", postmanObj.item_id);
postman.setEnvironmentVariable("item_name",  postmanObj.item_name);

以此类推。