【问题标题】:Pulling multiple values from JSON response using 'Json Path Extractor ' in Jmeter使用 Jmeter 中的“Json Path Extractor”从 JSON 响应中提取多个值
【发布时间】:2013-05-14 10:55:29
【问题描述】:
{
    "response_time": 0.014376163482666016,
    "applications": [
        {
            "api_key": "blted0e7982e1cf62a8",
            "name": "gta",
            "uid": "gta",
            "account_name": "jack"
        },
        {
            "api_key": "blt1423c40d23e4a423",
            "name": "cellapp",
            "uid": "cellapp",
            "account_name": "max"
        }
    ]
}

请帮助我使用 Jmeter Json Path Extractor 提取 account_name = max

【问题讨论】:

  • 在上面的例子中,我想使用 Json 路径提取器提取 "account_name": "max" 我使用 $.applications.account_name 但它给了我 account_name = jack
  • 你必须遍历你的结果。
  • @Shivan Raptor 如果我的回复包含多个帐户,在这种情况下我应该使用什么来提取
  • @Shivan Raptor 我们如何在 Jmeter 中进行 REST Api 调用测试

标签: json jmeter jsonpath


【解决方案1】:

$.applications.name[2] 必须准确返回第二个名称元素。

如果你使用JSONPath$..name 一样,这将查找所有名为name 的元素,并且插件将返回一个类似于["gta","cellapp"] 的字符串值。如有必要,您可以解析此字符串。

查看此站点以了解如何构建 JSONPath 表达式: http://goessner.net/articles/JsonPath/index.html#e2.

【讨论】:

  • 正确的表达式看起来像$.applications[1].account_name: 1. 问题是关于“account_name”,而不是“name”字段; 2.索引从0开始,而不是从1开始;所以第二个元素将是[1]; 3.你必须参考“应用程序”项目的点索引,而不是名称。
【解决方案2】:

用表达式 ->

$.[?(@.account_name=='max')].account_name

你会得到

[
  "max"
]

用表达式 ->

$.[?(@.account_name=='max')]

你会得到

[
    {
        "api_key": "blt1423c40d23e4a423",
        "name": "cellapp",
        "uid": "cellapp",
        "account_name": "max"
    }
]

用表达式 ->

$.[?(/max/.test(@.account_name))]

你会得到一个“喜欢”的条件

[
    {
        "api_key": "blt1423c40d23e4a423",
        "name": "cellapp",
        "uid": "cellapp",
        "account_name": "max"
    }
]

【讨论】:

    【解决方案3】:
    $..[?(@.account_name =='max')].account_name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 2018-02-08
      • 2020-07-28
      • 1970-01-01
      相关资源
      最近更新 更多