【问题标题】:How to extract a json value in Jmeter based on value of another如何根据另一个值在Jmeter中提取json值
【发布时间】:2018-07-30 16:09:50
【问题描述】:

在 Jmeter 中,我试图从 json 中提取值。 这是我收到的 json 响应:

    {
    Definition: {
        key: 1124,
        Id: 1743,
        srcID: "3427",
        pcKey: -1,
        userName: "abraizada",
        cName: "JMeter2016-11-27-1480283993838",
        Type: "SUBJECT",
        cohortTool: "Web app",
        cCount: 74,
        extractionStatus: "Completed",
        dateCreated: "2017-05-09T18:35:35Z"
    },
    datasource: {
        id: 2,
        name: "Claims-OMOP",
        subjectCount: 116352
    },
    project: {
        id: 747,
        name: "Jmeter Project"
    }
},
{
    cohortDefinition: {
        key: 1123,
        Id: 1742,
        srcID: "3447",
        pcKey: -1,
        userName: "IE_USER",
        cName: "JMeter2016-11-15-1479204865900",
        Type: "SUBJECT",
        cohortTool: "Web app",
        cCount: 74,
        extractionStatus: "",
        dateCreated: "2017-05-09T18:35:35Z"
    },
    datasource: {
        id: 2,
        name: "External",
        sCount: 116352
    },
    project: {
        id: 747,
        name: "Jmeter Project"
    }
},

从上面的响应中,如果 srcID=3447,我想提取值 'key'。 我试着这样做 $..cohortKey[?(@.srcCohortId = 3447)].cohortKey

但没有得到结果。谁能帮助我根据条件提取“关键”值。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    您可以使用JSON Extractor 使用如下 JSON 路径表达式执行此操作:

    $..[?(@.srcID==3447)].key
    

    地点:

    • .. - 递归下降,有助于在 json 数据中找到任何地方
    • [] - 一个数组,表示过滤器将在数组中应用和查找
    • ?( ) - 应用过滤器/条件(脚本)表达式。
    • @ - 当前对象
    • @.srcID==3447 - 具有子 srcID 和值 3447 的当前对象
    • .key - 获取满足上述条件的对象的key

    我举个例子,像上面一样配置 JSON 提取器

    结果


    更多关于JSON Extractor的使用方法,请参考:

    【讨论】:

    • 感谢 Tom Tran。我能够做到这一点。现在我尝试参数化它。如果我想将 3447 作为变量,我应该怎么做?第 1 步:使用正则表达式我正在提取一个 ID,我们将其称为 CID,现在我想将它传递给第 2 步,即 Json 提取器以获取基于 CID 的密钥。这是我的代码 $..[?(@.srcId == ${__evalVar(${cid})}].cohortKey。但我收到错误处理队列键 JSON 提取器中的 JSON 内容时出错,消息:无法解析令牌开始在第 3 位。预期 ?, ', 0-9, *
    • 和上面的表达式一样。我假设您将提取 srcID 并将其存储到名为 SRC_ID 的变量中,那么您的 JSON 路径表达式将为:$..[?(@.srcID==${SRC_ID})].key
    • 汤姆,能解决。 $..[?(@.srcId == ‘${cid}‘)].cohortKey 。感谢您发布的链接。
    【解决方案2】:

    这是提取值的表达式。

    `$..[?(@.srcID=3447)].key`
    

    参考:

    https://www.blazemeter.com/blog/advanced-usage-json-path-extractor-jmeter

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 2022-08-19
      相关资源
      最近更新 更多