如何使用 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 两个不同的变量与您请求的两个值。
- 将 JSR223 PostProcessor 添加为 returns 以上 JSON
请求的子项
将以下代码放入"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())
完成后,您将能够在需要时将最内层的 levelID 引用为 ${innterMost}
,并将其父级引用为 ${parentOf}
。
参考文献:
我在下面粘贴了一个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 两个不同的变量与您请求的两个值。
- 将 JSR223 PostProcessor 添加为 returns 以上 JSON 请求的子项
将以下代码放入"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())
完成后,您将能够在需要时将最内层的 levelID 引用为
${innterMost}
,并将其父级引用为${parentOf}
。
参考文献: