目录
介绍
背景
使用代码
- 下载源代码 - 1.7 KB
我将向您展示如何 在JMeter上访问json变量中的属性值。
背景在使用JMeter时,我发现JMeter并不容易确定json变量的属性值。你想知道我的意思吗?
举个例子:
您有返回此json的HTTP请求:
{
"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!"
}
}
如果您想获取一个包含id和name的数组,请使用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请求中访问id和name。
这是一个JMeter演示如何执行此操作的测试。
https://www.codeproject.com/Tips/5323656/JMeter-JSON-variable-in-a-ForEach-Controller