1

我有这个json:

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

使用这个 Json 路径表达式:$.. 它返回所有的 Json。我想找到只返回 ID 值的 Json 路径表达式:“-1”“222”“223”“224”

你能帮助我吗?

4

1 回答 1

0

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

作为替代方案,您可以使用 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());

演示:在线 Groovy 示例

更多信息:

于 2020-11-12T03:20:54.057 回答