JMeter——ForEach控制器中的JSON变量

目录

介绍

背景

使用代码


介绍

我将向您展示如何 JMeter上访问json变量中的属性值。

背景

在使用JMeter时,我发现JMeter并不容易确定json变量的属性值。你想知道我的意思吗?

举个例子:

您有返回此jsonHTTP请求:

{
   "page":1,
   "per_page":6,
   "total":12,
   "total_pages":2,
   "data":[
      {
         "id":1,
         "name":"cerulean",
         "year":2000,
         "color":"#98B2D1",
         "pantone_value":"15-4020"
      },
      {
         "id":2,
         "name":"fuchsia rose",
         "year":2001,
         "color":"#C74375",
         "pantone_value":"17-2031"
      },
      {
         "id":3,
         "name":"true red",
         "year":2002,
         "color":"#BF1932",
         "pantone_value":"19-1664"
      },
      {
         "id":4,
         "name":"aqua sky",
         "year":2003,
         "color":"#7BC4C4",
         "pantone_value":"14-4811"
      },
      {
         "id":5,
         "name":"tigerlily",
         "year":2004,
         "color":"#E2583E",
         "pantone_value":"17-1456"
      },
      {
         "id":6,
         "name":"blue turquoise",
         "year":2005,
         "color":"#53B0AE",
         "pantone_value":"15-5217"
      }
   ],
   "support":{
      "url":"https://reqres.in/#support-heading",
      "text":"To keep ReqRes free, contributions towards server costs are appreciated!"
   }
} 

如果您想获取一个包含idname的数组,请使用JSON Extractor获取此信息:

这将在json上返回一个数组:

知道您想使用Foreach Controller访问数组中的每个属性值。

您无法访问执行此操作的属性:

${d.id} ${d.name}

因为JMeter d不是JSON,它是一个字符串。

使用代码

这种情况的解决方法是使用JSR223采样器进行一些操作。我们可以做的是读取d变量并提取我们需要的信息并将此信息添加到另一个变量中。

def data2 = vars.get("d");

def json = com.jayway.jsonpath.JsonPath.parse(data2);
def name = json.read('$.name');
def id = json.read('$.id');

vars.put("id", String.valueOf(id));
vars.put("name",name);

有了这个,我们可以在下一个HTTP请求中访问idname

这是一个JMeter演示如何执行此操作的测试。

https://www.codeproject.com/Tips/5323656/JMeter-JSON-variable-in-a-ForEach-Controller

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值