【问题标题】:How to filter sub JSON objects in postman API如何在邮递员 API 中过滤子 JSON 对象
【发布时间】:2018-10-14 07:39:52
【问题描述】:

我什至可能没有使用正确的术语,所以我提前道歉。

我正在使用 Postman 运行 API 调用来为客户和我自己的研究收集数据,我需要通过“子对象”过滤请求(再次不确定术语)

这是我用来获得以下响应的调用:

https://apicfa.convirza.com/v2/call/dni?filter=group_id=8361&limit=10


{
    "result": "success",
    "err": null,
    "data": [
        {
            "call_id": "6834916",
            "call_flow_id": 22830,
            "group_id": 8361,
            "disposition": "ANSWERED",
            "duration": 27,
            "caller_id": "5551234545",
            "tracking_number": "5551234545",
            "ring_to": "5551234545",
            "repeat_call": false,
            "call_started": "2018-05-03T21:30:35.000Z",
            "dni_data": {
                "browser": "Chrome/(Android; Android 7.1.1)",
                "created_at": "2018-05-03T21:30:10.000Z",
                "custom_params": {},
                "destination_url": "",
                "dni_vid": "",
                "first_page": "",
                "ga_cid": "",
                "ip_host": "",
                "last_page": "",
                "log_date": "2018-05-03 21:30:10 UTC",
                "location_details": {

                },
                "ref_param": {
                    "utm_medium": "cpc",
                    "utm_campaign": "GT:Tampa",
                    "utm_source": "google"
                },
                "master_node_id": 8361,
                "organizational_unit_id": 8361,
                "referring": "https://google.com",
                "referring_type": "Paid",
                "referring_url": "",
                "search_words": "Not Provided",
                "session_id": "",
                "updated_at": "",
                "gclid": "EwE",
                "gclsrc": "",
                "phone_numbers": {
                    "id": 60270626,
                    "dni_log_id": "5aeb7f628a95c63fe500055b",
                    "dni_id": "3798",
                    "phone_number": "5551234545",
                    "element": "cfa_eps",
                    "phone_number_id": "",
                    "pool_id": "6118",
                    "number_last_used": "2018-05-03 21:30:10 UTC",
                    "provisioned_route_id": "22830"
                }
            }
        },

我想做的是按“custom_params”或“utm_medium”过滤,但我不知道如何达到那个级别。任何帮助将不胜感激。

【问题讨论】:

  • 过滤是什么意思?是否要检查测试中的特定值?
  • 丹尼,我使用 Postman 从通话记录中提取数据,而不是作为开发人员。我的目标是获得上述结果,提取它,将其转换为 csv,然后将数据呈现给客户。因此,当我说过滤器时,我想返回所有符合特定条件的通话详细记录,即来自 Google 付费的通话......

标签: json api object filter postman


【解决方案1】:

你可以尝试如下;

var responsedata = pm.response.json();

if(responsedata.length > 0) {
    responsedata.data.forEach(function(data) {
        var dniData = data.dni_data
        var customParams = dniData.custom_params
        pm.test("customParams not empty", function () {
            pm.expect(customParams).to.not.equal(null);
        });
        pm.environment.set("customParams", customParams);

        var refParams = dniData.ref_param
        pm.test("refParams not empty", function () {
            pm.expect(refParams).to.not.equal(null);
        });

        var utmMedium = refParams.utm_medium
        pm.test("utmMedium not empty", function () {
            pm.expect(utmMedium).to.not.equal("");
        });
        pm.environment.set("refParams", refParams);
    });
}

【讨论】:

  • 这是使用新旧 Postman 语法的混合,我建议编辑它以使用较新的东西。您不再需要 JSON.parse responseBody,因为 pm.response.json() 会这样做。 tests[] 已被 pm.test() 函数替换。
【解决方案2】:

我知道这是迟到的反应,但它可以帮助其他人。
使用“JsonPath”这可能是一个解决方案。

对于 custom_params 使用这个:
$.data[*].dni_data.custom_params

并且,对于 utm_medium,使用这个:
$.data[*].dni_data.ref_param.utm_medium

希望对新观众有所帮助。

【讨论】:

    猜你喜欢
    • 2017-08-17
    • 1970-01-01
    • 2020-10-17
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2017-11-03
    相关资源
    最近更新 更多