如何使用 Jmeter Json Extractor 获取水平值

How to fetch the level wise value using Jmeter Json Extractor

我在下面粘贴了一个json文件,想得到最里面的levelID值(即ff808181620ce25501620d08e4dc0061)和它的父级( ff808181620ce25501620d08e4b9005e)。尝试了 $.levelID[3];$.levelID[4] 相应的变量名:levelID & parentlevelID 但未能获取上面括号中提到的值。

{ "levelID":null, "levelType":0, "levelName":null, "learningObjective":null, "reusablelevelID":"", "reusableClid":"", "duration":null, "subLevels":[{"levelID":"ff808181620ce25501620d08e492005b","levelType":1,"levelName":"ch1","learningObjective":null,"reusablelevelID":"0","reusableClid":"0","duration":null, "subLevels":[{"levelID":"ff808181620ce25501620d08e4b9005e","levelType":2,"levelName":"sch1","learningObjective":null,"reusablelevelID":"0","reusableClid":"0","duration":null, "subLevels":[{"levelID":"ff808181620ce25501620d08e4dc0061","levelType":3,"levelName":"u1","learningObjective":null,"reusablelevelID":"0","reusableClid":"0","duration":null, "subLevels":null,"wbList":[],"cList":null,"classroomResources":[],"qList":[]}],"wbList":[],"cList":null,"classroomResources":[],"qList":[]}],"wbList":[],"cList":null,"classroomResources":[],"qList":[]}], "wbList":[], "cList":[], "classroomResources":[], "qList":[] }

请帮忙,提前致谢。

您的 levelID 在 JSON 的第 2 级(在 [{ 内),而每个 . 代表 1 个级别。

您需要两个 JSON Extractor 作为请求的 Post 处理器,两者都具有相同的 JSON 路径表达式:

$..levelID

对于ff808181620ce25501620d08e4dc0061选择第4场比赛和其他第3场比赛

它将 return 两个不同的变量与您请求的两个值。

  1. JSR223 PostProcessor 添加为 returns 以上 JSON
  2. 请求的子项
  3. 将以下代码放入"Script"区域:

    import com.jayway.jsonpath.JsonPath
    
    def response = prev.getResponseDataAsString()
    def levelTypes = JsonPath.read(response, '$..levelType').sort()
    vars.put('innerMost', JsonPath.read(response, '$..[?(@.levelType == ' + levelTypes.get(levelTypes.size()-1) + ')].levelID').get(0).toString())
    vars.put('parentOf', JsonPath.read(response, '$..[?(@.levelType == ' + levelTypes.get(levelTypes.size()-2) + ')].levelID').get(0).toString())
    
  4. 完成后,您将能够在需要时将最内层的 levelID 引用为 ${innterMost},并将其父级引用为 ${parentOf}

参考文献: