如何在Jmeter中使用JSON提取器提取列表中的特定值

时间:2018-10-11 14:19:01

标签: json jmeter

我对Jmeter中的Json提取器采样器有疑问。 我有一个json,其中包含组件列表,问题是列表的顺序正在更改,如果我在早上发送请求,则列表的顺序与晚上不同。 我想提取Id = 10606的值“ SalesPerson”。 问题是,如果10606的Id是第一个响应,则可以,但是,如果其顺序不同,则会带来错误的值。 我需要每次发送请求时都可以搜索ID 10606并返回销售人员(在示例“ Bebeto”中)。 能做到吗?它将准确地提取特定值,而不是根据响应位置来定位。

{
    "Error": null,
    "ErrorCode": 0,
    "Data": [{
        "Account": "Pro",
        "SalesPerson": "Ronaldo",
        "Id": 7722,
        "Name": "Brazil"
    }, {
        "Account": "Basic",
        "SalesPerson": "Bebeto",
        "Id": 10606,
        "Name": "USA"
    }, {
        "Account": "Basic",
        "SalesPerson": "Rivaldo",
        "Id": 13017,
        "Name": "Greece"
    }],
    "Totals": 3
}

提供了采样器,即使列表中的第一个10606也可以正常工作。我希望它提取ID为10606的销售人员,无论其在响应中的位置如何。我想提供10606并获取销售员。 在所提供的方案中,结果是错误的,因为其提取为“ Ronaldo” 我想念什么?

enter image description here

1 个答案:

答案 0 :(得分:1)

选择Filter Operator,类似:

$..[?(@.Id == '10606')].SalesPerson

应该为您解决问题

演示:

JMeter JSON Path Extractor Conditional Select

更多信息和技巧:JMeter's JSON Path Extractor Plugin - Advanced Usage Scenarios