【问题标题】:fetch the dynamic value from json response using regex or json extractor in Jmeter使用 Jmeter 中的正则表达式或 json 提取器从 json 响应中获取动态值
【发布时间】:2021-02-04 15:21:47
【问题描述】:

从以下 JSON 响应中,想要获取 ref_id 的值 type(现在这里的问题是 type 位置是动态的),如何使用 JSON 或 REGEX 提取器或使用 post 提取它处理器。

所以如果你看到有两个ref_id,一个在metaData 下,一个在key 下。想要选择元数据下的哪个 例如for "type": "recall"ref_idcmVjYWxsLWU1ZGY4MTZkLTE0MTctNGJhNy1hMTQzLTY1OGJmMmYxYTRjMw==for "type": "followUp"Zm9sbG93VXAtMzk4MGRhZDQtOGE3Mi00YmM0LWFhYWEtM2Y3ZTU3NzZlNDM0

并且 "type": "recall""type": "followUp"的位置在json响应中不是固定的。所以我不能使用任何常量索引值来获取这两个值。尝试使用"id": "(.*?)","type": "recall" "id": "(.*?)","type": "followUp"。但它失败了。

{
    "entities": {
        "cmVjYWxsLWU1ZGY4MTZkLTE0MTctNGJhNy1hMTQzLTY1OGJmMmYxYTRjMw==": {
            "ref_id": "cmVjYWxsLWU1ZGY4MTZkLTE0MTctNGJhNy1hMTQzLTY1OGJmMmYxYTRjMw==",
            "type": "recall",
            "metaData": {
                "ref_id": "e5df816d-1417-4ba7-a143-658bf2f1a4c3",
                "accountId": "ef757dba-f0d5-4464-a338-4a810e02bf47",
                "patientId": "e74a1b0f-d3e0-4b78-bc4b-83687786466e",
                "timelineDate": "2021-01-30T14:28:24.738Z"
            }
        },
        "Zm9sbG93VXAtMzk4MGRhZDQtOGE3Mi00YmM0LWFhYWEtM2Y3ZTU3NzZlNDM0": {
            "ref_id": "Zm9sbG93VXAtMzk4MGRhZDQtOGE3Mi00YmM0LWFhYWEtM2Y3ZTU3NzZlNDM0",
            "type": "followUp",
            "metaData": {
                "ref_id": "3980dad4-8a72-4bc4-aaaa-3f7e5776e434",
                "patientId": "e74a1b0f-d3e0-4b78-bc4b-83687786466e",
                "createdAt": "2021-01-29T14:36:15.127Z",
                "timelineDate": "2021-01-29T14:36:15.127Z"
            }
        }
    },
    "result": [
        "cmVjYWxsLWU1ZGY4MTZkLTE0MTctNGJhNy1hMTQzLTY1OGJmMmYxYTRjMw==",
        "Zm9sbG93VXAtMzk4MGRhZDQtOGE3Mi00YmM0LWFhYWEtM2Y3ZTU3NzZlNDM0"
    ]
}

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    如果您只需要从响应中获取这些ref_id 属性值,可以使用JSON JMESPath Extractor 来完成,表达式很简单:

    entities.*.ref_id
    

    演示:

    更多信息:

    【讨论】:

    • Dmitri 非常感谢您快速恢复,但我需要单独使用它们,我的 JSON 响应可能会有所不同,"type": "followUp" 可能会出现在 JSON 文件的末尾
    • 所以不能依赖索引值,所以搜索ref_id where "type": "followUp",类似这样
    【解决方案2】:

    作为 JSON 提取器,请您试试这个。

    $..[?(@.type == "recall")].ref_id

    $..[?(@.type == "followUp")].ref_id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多