如何根据另一个值在 Jmeter 中提取 json 值

Sac*_*tan 0 jmeter

在 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"
    }
},
Run Code Online (Sandbox Code Playgroud)

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

但没有得到结果。任何人都可以帮助我根据条件提取“关键”值。

Tom*_*ran 6

您可以使用JSON Extractor使用JSON Path 表达式执行此操作,如下所示:

$..[?(@.srcID==3447)].key
Run Code Online (Sandbox Code Playgroud)

在哪里:

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

我举了一个例子,并像上面一样配置 JSON Extractor

结果


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