JSON路径提取器来计算密钥的数量

时间:2014-12-01 12:23:49

标签: regex json performance jmeter

我有样品json

[
:   {
:   :   "id":"255",
:   :   "name”:”abc”,
:   },
:   {
:   :   "id":"257",
:   :   "name”:”xyz”,
:   }
]

我在jmeter中使用json路径提取器来获取id和name的值。 但是,是否可以直接获得ID或名称的计数。 我知道我是否使用正则表达式提取器并使用for循环来获取计数。

3 个答案:

答案 0 :(得分:2)

使用正则表达式提取器并设置否。匹配到负数没有。然后引用name_matchNr变量应该给你字符串的出现次数。

enter image description here

然后expression_matchNr变量应该给你id出现次数。

有关其他参考,请参阅JMeter帮助Regular Expression extractor

答案 1 :(得分:0)

可以通过一些脚本来实现。

例如,如果您有以下JSON有效负载:

{"employees":[
    {"firstName":"John", "lastName":"Doe"}, 
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}

以下JSONPath表达式:

$.employees..firstName

返回名字如下:

["John","Anna","Peter"]

您可以通过在结果变量中计算逗号来获取匹配数。

鉴于你正在使用" name"作为JSON路径提取器中的变量名称

  1. 在JSONPath提取程序
  2. 下添加Beanshell PostProcessor
  3. 将以下代码放入PostProcessor"脚本"面积:

    int matches = vars.get("name").split(",").length;
    vars.put("matches",String.valueOf(matches));
    
  4. 可选择添加Debug SamplerView Results Tree Listener并运行测试
  5. 你应该有#34;匹配"变量包含" 3"

    有关Apache JMeter中Beanshell脚本的更多信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南。

答案 2 :(得分:0)

还有一种方法可以使用Json Extractor。对于您给定的Json,您可以在HTTP Sampler中添加一个Json Extractor,并在HTTP sampler旁边添加一个Debug Sampler(以查看结果),如下所示 enter image description here

并设置变量和路径表达式如下 enter image description here

查看调试采样器的响应数据,最后得到结果

idCount_matchNr = 2