【问题标题】:Postman JSON parse response body arrays inside arraysPostman JSON 解析数组内的响应正文数组
【发布时间】:2018-12-14 16:19:35
【问题描述】:

我有这个来自 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. 如何从数组“options”中获取值,我需要获取“id”: 63775 并存储为“item_id”,并将“name”:“Item”存储为“item_name”邮递员变量。
  2. 然后我需要选择嵌套在记录中的“选项” “项目”并选择选项“名称”:“牙刷”并存储在邮递员中 变量“svc_optn_optn_name”,它的“id”存储在 "svc_optn_optn_id"

【问题讨论】:

  • 外部选项数组将只包含 1 个对象,也可能有多个,什么是 postman 变量?

标签: javascript postman


【解决方案1】:

在这里,我用几行代码就您的问题提出自己的建议。我不确定,您将如何使用这些值。我也不知道外部选项数组是否总是有 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);

等等。

【讨论】:

    【解决方案2】:

    这就是解决办法

    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);
    
        }
    

    【讨论】:

      【解决方案3】:
      const data = JSON.parse(responseBody);
      data.forEach(item => {
          console.log(item.id); // deliver object id.
          item.options.forEach(option => {
              console.log(`Option Id ${option.id}`); // option id
              postman.setEnvironmentVariable("service_id", option.id);
              option.options(optionItem => {
                  if(optionItem.name == 'Toothbrush'){
                      postman.setEnvironmentVariable("svc_optn_optn_name", optionItem.name);
                      postman.setEnvironmentVariable("svc_optn_optn_id", optionItem.id);
                  }
              });
          });
      });
      

      【讨论】:

        猜你喜欢
        • 2021-07-02
        • 1970-01-01
        • 2018-12-04
        • 2020-05-14
        • 2011-05-20
        • 2016-05-01
        • 2021-11-13
        • 2021-08-15
        • 1970-01-01
        相关资源
        最近更新 更多