用于获取根密钥的 JSON 路径表达式



我有这个json:

{
"-1":     {
"description": "test1"
},
"222":     {
"description": "test2"
},
"223":     {
"description": "test3"
},
"224":     {
"description": "test4"
},
"recordsCount": 4
}

使用此 Json 路径表达式: $.. 它返回所有 Json。 我想找到仅返回 ID 值的 Json 路径表达式: "-1" "222" "223" "224">

你可以帮我吗?

访问property(键(而不是值是原始 JSONPath 规范中不存在的功能,只有少数实现支持此功能。因此,使用JMeter JsonPath插件/提取器仅提取属性名称.
例如,JsonPath-Plus for JavaScript提供了用于获取匹配项的属性名称的运算符~

作为替代方案,您可以使用JSR223 Groovy从JSON中获取结果:

import groovy.json.JsonSlurper;
import groovy.json.JsonOutput; //if output as JSON is needed
JsonSlurper JSON = new JsonSlurper ();
jsonResponse = JSON.parseText(prev.getResponseDataAsString());
//println json.keySet() //[-1, 222, 223, 224, recordsCount]
vars.put("firstName", response.members[2].firstName.toString());
Set<String> keySet=obj.keySet();
List<String> keys = [];
// iterate over the key set, adding only numbers to result list
for(String key:keySet){
if(key.isNumber())
keys.add(key);
}
//println(keys); //[-1, 222, 223, 224]
def output = JsonOutput.toJson(keys); //convert to JSON string if neede
//println(output); //["-1","222","223","224"]
vars.put("jsonKeys", output.toString());

演示:在线时髦样本。

更多信息:

  • 如何使用JMETER从JSON响应中提取数据(参见8.3 JSR223 with Groovy(
  • 在 Groovy 中编写 JMeter 断言脚本 - 教程
  • Jayway JsonPath (替代 Java JSONPath 库(

最新更新