【问题标题】:How do i find and count all objects in JSON如何在 JSON 中查找和计算所有对象
【发布时间】:2023-04-08 06:24:01
【问题描述】:

我需要找出在休息 API 请求中我有多少带有 ID 的项目。我想计算我有多少带有 ID 的项目,而不是我需要为它们分配一个变量。这怎么能在 JSON 中完成。我知道我有 4 个带有 id 的对象,但是随着我在 blazemeter 上运行更多测试,这可能会发生变化。计数的 ID 需要有一个分配的变量,以便我可以在 url 中使用该变量来查看会话 ID。

{
    "limit": 20,
    "skip": 0,
    "total": 4,
    "hidden": 0,
    "api_version": 4,
    "error": null,
    "result": [
        {
            "id": 9595495,
            "name": "June_14_11:47 AM - GUI Functional Test",
            "isNewTest": true,
            "userId": 1340257,
            "lastRunTime": 1625040498,
            "created": 1623660458,
            "updated": 1625033944,
            "creatorClientId": "gui",
            "overrideExecutions": [
                {
                    "executor": "selenium",
                    "scenario": "default-scenario",
                    "locations": {
                        "harbor-5d25f94f9950ce73cd105f53": 1
                    },
                    "capabilities": {
                        "platformName": "linux",
                        "browserName": "chrome",
                        "browserVersion": "default",
                        "blazemeter_videoEnabled": true
                    }
                }
            ],
            "executions": [
                {
                    "locationsWeighted": true,
                    "executor": "selenium",
                    "hasDataSources": false,
                    "scenario": "First item purchase",
                    "locations": {
                        "harbor-5d25f94f9950ce73cd105f53": 1
                    },
                    "concurrency": 1,
                    "usersNotConfigured": true,
                    "durationIsNotConfigured": true,
                    "capabilities": {
                        "browserName": "chrome",
                        "browserVersion": "default",
                        "blazemeter_videoEnabled": true
                    }
                }
            ],
            "shouldSendReportEmail": true,
            "projectId": 1021507,
            "lastUpdatedById": 1340257,
            "configuration": {
                "type": "functionalGui",
                "dedicatedIpsEnabled": false,
                "canControlRampup": false,
                "targetThreads": 0,
                "enableFailureCriteria": false,
                "enableMockServices": false,
                "enableTestData": false,
                "enableLoadConfiguration": true,
                "scriptType": "taurus",
                "filename": "functionalGui.yaml",
                "testMode": "script",
                "extraSlots": 0,
                "plugins": {
                    "thresholds": {
                        "thresholds": [],
                        "ignoreRampup": false,
                        "fromTaurus": false,
                        "slidingWindow": false
                    }
                }
            }
        },
        {
            "id": 9595540,
            "name": "My first http test",
            "isNewTest": true,
            "userId": 1340257,
            "lastRunTime": 1623661211,
            "created": 1623661196,
            "updated": 1623686973,
            "creatorClientId": "BE_CHROME",
            "overrideExecutions": [
                {
                    "concurrency": 20,
                    "executor": "jmeter",
                    "locations": {
                        "us-central1-a": 20
                    },
                    "locationsPercents": {
                        "us-central1-a": 100
                    },
                    "rampUp": "1m",
                    "holdFor": "19m",
                    "steps": 0
                }
            ],
            "executions": [
                {
                    "concurrency": 20,
                    "usersNotConfigured": false,
                    "holdFor": "19m",
                    "durationIsNotConfigured": false,
                    "rampUp": "1m",
                    "steps": 0,
                    "locations": {
                        "us-central1-a": 20
                    },
                    "locationsPercents": {
                        "us-central1-a": 100
                    },
                    "executor": "jmeter",
                    "scenario": "default-scenario-9595540"
                }
            ],
            "shouldSendReportEmail": true,
            "projectId": 1021507,
            "lastUpdatedById": 1340257,
            "configuration": {
                "type": "taurus",
                "canControlRampup": false,
                "targetThreads": 1,
                "executionType": "taurusCloud",
                "enableFailureCriteria": false,
                "enableMockServices": false,
                "enableTestData": false,
                "enableLoadConfiguration": true,
                "scriptType": "jmeter",
                "threads": 0,
                "filename": "My_first_http_test.jmx",
                "testMode": "script",
                "extraSlots": 0,
                "plugins": {
                    "jmeter": {
                        "version": "auto",
                        "consoleArgs": "",
                        "enginesArgs": ""
                    },
                    "thresholds": {
                        "thresholds": [],
                        "ignoreRampup": false,
                        "fromTaurus": false,
                        "slidingWindow": false
                    }
                }
            }
        },
        {
            "id": 9595539,
            "name": "My first http test",
            "isNewTest": true,
            "userId": 1340257,
            "lastRunTime": 1623661204,
            "created": 1623661195,
            "updated": 1623661202,
            "creatorClientId": "BE_CHROME",
            "overrideExecutions": [
                {
                    "concurrency": 20,
                    "executor": "jmeter",
                    "locations": {
                        "us-central1-a": 20
                    },
                    "locationsPercents": {
                        "us-central1-a": 100
                    },
                    "rampUp": "1m",
                    "holdFor": "19m",
                    "steps": 0
                }
            ],
            "executions": [
                {
                    "concurrency": 20,
                    "usersNotConfigured": false,
                    "holdFor": "19m",
                    "durationIsNotConfigured": false,
                    "rampUp": "1m",
                    "steps": 0,
                    "locations": {
                        "us-central1-a": 20
                    },
                    "locationsPercents": {
                        "us-central1-a": 100
                    },
                    "executor": "jmeter",
                    "scenario": "default-scenario-9595539"
                }
            ],
            "shouldSendReportEmail": true,
            "projectId": 1021507,
            "lastUpdatedById": 1340257,
            "configuration": {
                "type": "taurus",
                "canControlRampup": false,
                "targetThreads": 0,
                "executionType": "taurusCloud",
                "enableFailureCriteria": false,
                "enableMockServices": false,
                "enableTestData": false,
                "enableLoadConfiguration": true,
                "scriptType": "jmeter",
                "filename": "My_first_http_test.jmx",
                "testMode": "script",
                "extraSlots": 0,
                "plugins": {
                    "jmeter": {
                        "version": "auto",
                        "consoleArgs": "",
                        "enginesArgs": ""
                    },
                    "thresholds": {
                        "thresholds": [],
                        "ignoreRampup": false,
                        "fromTaurus": false,
                        "slidingWindow": false
                    }
                }
            }
        },
        {
            "id": 9595355,
            "name": "My first http test",
            "isNewTest": true,
            "userId": 1340257,
            "lastRunTime": 1623656690,
            "created": 1623656683,
            "updated": 1623656688,
            "creatorClientId": "gui",
            "overrideExecutions": [
                {
                    "concurrency": 5,
                    "executor": "taurus",
                    "holdFor": "19m",
                    "locations": {
                        "us-east4-a": 5
                    },
                    "locationsPercents": {
                        "us-east4-a": 100
                    },
                    "rampUp": "1m",
                    "steps": 0
                }
            ],
            "executions": [
                {
                    "concurrency": 5,
                    "usersNotConfigured": false,
                    "holdFor": "19m",
                    "durationIsNotConfigured": false,
                    "rampUp": "1m",
                    "steps": 0,
                    "locations": {
                        "us-east4-a": 5
                    },
                    "locationsWeighted": true,
                    "locationsPercents": {
                        "us-east4-a": 100
                    },
                    "executor": "jmeter",
                    "hasDataSources": false,
                    "scenario": "default-scenario"
                }
            ],
            "shouldSendReportEmail": false,
            "projectId": 1021484,
            "lastUpdatedById": 1340257,
            "configuration": {
                "type": "taurus",
                "canControlRampup": false,
                "targetThreads": 0,
                "executionType": "taurusCloud",
                "enableFailureCriteria": false,
                "enableMockServices": false,
                "enableTestData": false,
                "enableLoadConfiguration": true,
                "scriptType": "taurus",
                "filename": "blazemeter_url_test_script.yaml",
                "testMode": "http",
                "extraSlots": 0,
                "plugins": {
                    "jmeter": {
                        "version": "auto",
                        "consoleArgs": "",
                        "enginesArgs": ""
                    },
                    "thresholds": {
                        "thresholds": [],
                        "ignoreRampup": false,
                        "fromTaurus": false,
                        "slidingWindow": false
                    }
                }
            }
        }
    ],
    "request_id": "60dc3c023ef70"
}

【问题讨论】:

    标签: json api postman


    【解决方案1】:
    console.log(pm.response.json().result.filter(a=>a.id).length)
    

    this 为结果数组中的所有元素提供属性 id,然后返回其长度

    【讨论】:

      【解决方案2】:

      如果您需要存储所有 id,我认为没有办法在邮递员中存储列表,但您可以将所有 id 存储为逗号分隔的字符串,如下所示:

      var jsonData = JSON.parse(responseBody);
      var arr = ""
      for (var i = 0; i<jsonData.result.length; i++){
          arr += jsonData.result[i].id + ','
      }
      pm.environment.set("ids", arr);
      

      【讨论】:

        猜你喜欢
        • 2018-03-01
        • 2017-06-18
        • 1970-01-01
        • 2016-01-10
        • 2014-05-13
        • 2020-07-23
        • 1970-01-01
        • 2021-05-09
        • 2022-11-18
        相关资源
        最近更新 更多