jmeter:我想从 2 个不同的 json 对象中提取 2 个值,其中 1 json 对象将验证我的条件和我想提取的其他值
jmeter: I want to extract 2 values from 2 different json objects where 1 json object will validate my condition & other value I want to extract
我的 JSON 回复是:
{
"results": [
{
"attributes": [
{
"format": "internal",
"name": "resourceid",
"type": "STRING",
"value": "56B15190000015E85E57923F0000033B"
},
{
"format": "attribute",
"name": "ds6w:identifier",
"type": "string",
"value": "ald7_al"
}
]
},
{
"attributes": [
{
"format": "internal",
"name": "resourceid",
"type": "STRING",
"value": "56B15190000015E85E578B1F000001B6"
},
{
"format": "attribute",
"name": "ds6w:identifier",
"type": "string",
"value": "fbh1"
}
]
},
{
"attributes": [
{
"format": "internal",
"name": "resourceid",
"type": "STRING",
"value": "56B15190000015E85E578F7800000211"
},
{
"format": "attribute",
"name": "ds6w:identifier",
"type": "string",
"value": "u89cf"
}
]
}
]
}
我想获取“56B15190000015E85E57923F0000033B”,其中值='ald7_al'
所以基本上在一个 json 数组中我有 json 对象,对于单个 json 对象我有两个 json 对象其中第二个 json 对象将验证我的条件参数,我想要第一个 jsonobject
的值
为了得到解决条件检查的结果,我使用了
JSON extractor expression as -> $..attributes[?(@.value==ald7_al)] 这给了我第二个 json 块,但我想要第一个 [=28= 的值]块。
如果您有任何意见,请帮助我。
预先感谢您的帮助!
从 JMeter 5.2.1 开始,内置 JMeter 组件无法做到这一点
- JSON Extractor cannot do this due to underlying Jayway JsonPath issue 287
- JSON JMESPath Extractor cannot do this due to underlying JMESPath issue 22
所以你只剩下 JSR223 PostProcessor and Groovy 语言,应该可以解决你的问题的示例代码如下:
def results = new groovy.json.JsonSlurper().parse(prev.getResponseData()).results
0.upto(results.size() - 1, { index ->
def attributes = results[index].attributes
if (attributes[1].get('value').equals('ald7_al')) {
vars.put('value', attributes[0].get('value'))
}
})
将其添加为 returns 上述 JSON 请求的子项,如果一切顺利,您将能够访问您正在寻找的值 ${value}
其中必需的。
更多信息:
我的 JSON 回复是:
{
"results": [
{
"attributes": [
{
"format": "internal",
"name": "resourceid",
"type": "STRING",
"value": "56B15190000015E85E57923F0000033B"
},
{
"format": "attribute",
"name": "ds6w:identifier",
"type": "string",
"value": "ald7_al"
}
]
},
{
"attributes": [
{
"format": "internal",
"name": "resourceid",
"type": "STRING",
"value": "56B15190000015E85E578B1F000001B6"
},
{
"format": "attribute",
"name": "ds6w:identifier",
"type": "string",
"value": "fbh1"
}
]
},
{
"attributes": [
{
"format": "internal",
"name": "resourceid",
"type": "STRING",
"value": "56B15190000015E85E578F7800000211"
},
{
"format": "attribute",
"name": "ds6w:identifier",
"type": "string",
"value": "u89cf"
}
]
}
]
}
我想获取“56B15190000015E85E57923F0000033B”,其中值='ald7_al'
所以基本上在一个 json 数组中我有 json 对象,对于单个 json 对象我有两个 json 对象其中第二个 json 对象将验证我的条件参数,我想要第一个 jsonobject
的值为了得到解决条件检查的结果,我使用了
JSON extractor expression as -> $..attributes[?(@.value==ald7_al)] 这给了我第二个 json 块,但我想要第一个 [=28= 的值]块。
如果您有任何意见,请帮助我。 预先感谢您的帮助!
从 JMeter 5.2.1 开始,内置 JMeter 组件无法做到这一点
- JSON Extractor cannot do this due to underlying Jayway JsonPath issue 287
- JSON JMESPath Extractor cannot do this due to underlying JMESPath issue 22
所以你只剩下 JSR223 PostProcessor and Groovy 语言,应该可以解决你的问题的示例代码如下:
def results = new groovy.json.JsonSlurper().parse(prev.getResponseData()).results
0.upto(results.size() - 1, { index ->
def attributes = results[index].attributes
if (attributes[1].get('value').equals('ald7_al')) {
vars.put('value', attributes[0].get('value'))
}
})
将其添加为 returns 上述 JSON 请求的子项,如果一切顺利,您将能够访问您正在寻找的值 ${value}
其中必需的。
更多信息: