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

时间:2017-05-09 20:08:16

标签: 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"
    }
},

从上面回复,我想提取价值'关键'如果srcID = 3447。 我试过这样做     $ .. cohortKey [?(@。srcCohortId = 3447)]。cohortKey

但没有得到结果。任何人都可以帮我提取" key"基于条件的价值。

2 个答案:

答案 0 :(得分:4)

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

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

其中:

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

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

结果

有关JSON Extractor的更多用法,请参阅:

答案 1 :(得分:1)

这是将提取值的表达式。

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

参考:

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