JMeter JSON 提取器按条件获取值
JMeter JSON Extractor to get value by condition
我得到这样的 JSON
字符串:
[{"id":123,"name":"XX","default":false,"type":"other"},{"id":789,"name":"ZZ","default":false,"type":"first"}]
我想获取 id
,其中名称为 ZZ
,因此提取的值应为 789
。
我试过这个 JSON 表达式:
$.id[?(@.name=='ZZ')]
我也尝试过正则表达式:
{"id":(.+?),"name":"ZZ","default":false
,
我的正则表达式解决方案不起作用,因为存在相似的 name
值,例如 ZZ
和 ZZ (XYZ)
。
你很接近,使用 JSON 提取器你需要找到 ZZ 然后获取对象的 ID return,使用以下表达式:
[?(@.name == 'ZZ')].id
在 jmeter 4.0 版本中可以使用 $..token_id,但在 jmeter 2.x 版本中我们需要使用 $.token_id 即,应该只有一个点(.) 在 $ 之后,我遇到了这个问题,现在它正在工作。
我得到这样的 JSON
字符串:
[{"id":123,"name":"XX","default":false,"type":"other"},{"id":789,"name":"ZZ","default":false,"type":"first"}]
我想获取 id
,其中名称为 ZZ
,因此提取的值应为 789
。
我试过这个 JSON 表达式:
$.id[?(@.name=='ZZ')]
我也尝试过正则表达式:
{"id":(.+?),"name":"ZZ","default":false
,
我的正则表达式解决方案不起作用,因为存在相似的 name
值,例如 ZZ
和 ZZ (XYZ)
。
你很接近,使用 JSON 提取器你需要找到 ZZ 然后获取对象的 ID return,使用以下表达式:
[?(@.name == 'ZZ')].id
在 jmeter 4.0 版本中可以使用 $..token_id,但在 jmeter 2.x 版本中我们需要使用 $.token_id 即,应该只有一个点(.) 在 $ 之后,我遇到了这个问题,现在它正在工作。