如何基于另一个json值在Jmeter中提取json值

如何基于另一个json值在Jmeter中提取json值,jmeter,Jmeter,在Jmeter中,我试图从json中提取值。 以下是我收到的json响应: { Definition: { key: 1124, Id: 1743, srcID: "3427", pcKey: -1, userName: "abraizada", cName: "JMeter2016-11-27-1480283993838", Type: "SUBJECT",

在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[?(@.srcohortId=3447)].cohortKey


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

下面是将提取值的表达式

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


以下是将提取值的表达式

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

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

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

  • -是递归下降,它有助于查找json数据中的任何地方
  • []
    -数组表示过滤器将在数组中应用和查找
  • ?()
    -应用筛选器/条件(脚本)表达式
  • @
    -当前对象
  • @.srcID==3447
    -具有值为
    3447的子
    srcID
    的currect对象
  • .key
    -获取满足上述条件的对象的密钥
我举了一个例子,并像上面那样配置JSON提取器

结果呢


有关JSON提取器的更多用法,请参阅:

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

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

  • -是递归下降,它有助于查找json数据中的任何地方
  • []
    -数组表示过滤器将在数组中应用和查找
  • ?()
    -应用筛选器/条件(脚本)表达式
  • @
    -当前对象
  • @.srcID==3447
    -具有值为
    3447的子
    srcID
    的currect对象
  • .key
    -获取满足上述条件的对象的密钥
我举了一个例子,并像上面那样配置JSON提取器

结果呢


有关JSON提取器的更多用法,请参阅:


谢谢Tom Tran。我能做到这一点。现在我试图对它进行参数化。如果我想将3447作为变量,我应该怎么做?步骤1:使用正则表达式,我提取一个ID,让我们将其称为CID,现在我想将其传递给步骤2 ie Json提取器,以基于CID获取密钥。这是我的代码$..[?(@.srcId==${{uu evalVar(${cid})}].cohortKey。但我在cohortKey JSON提取器中处理JSON内容时遇到错误,消息:无法分析从位置3开始的令牌。应为?,',0-9,*它与上面的表达式相同。我假设您将提取srcID并将其存储到名为SRC_ID的变量中,那么您的JSON路径表达式将为:
$[?(@.srcID)==${SRC_ID}].key
Tom,能够解决它。$..[?(@.srcId=='${cid}')].cohortKey。感谢你发布的链接。感谢Tom Tran。我能够做到这一点。现在我尝试对其进行参数化。如果我想将3447作为变量,我该怎么做?步骤1:使用正则表达式提取ID,让我们将其称为CID,现在我想将其传递到步骤2 ie Json提取器,以基于CID获取密钥。这是我的代码$。。[?(@.srcId=${uuu evalVar(${cid})}].cohortKey。但我在cohortKey JSON提取器中处理JSON内容时遇到错误,消息:无法分析从位置3开始的令牌。应为?,',0-9,*它与上面的表达式相同。我假设您将提取srcID并将其存储到名为SRC_ID的变量中,那么您的JSON路径表达式将为:
$[?(@.srcID)==${SRC_ID}].key
Tom,能够解决它。$..[?(@.srcId=='${cid}')].cohortKey。谢谢你发布的链接。