【问题标题】:How to fetch the level wise value using Jmeter Json Extractor如何使用 Jmeter Json Extractor 获取级别明智的值
【发布时间】:2018-03-10 07:10:25
【问题描述】:

我在下面粘贴了一个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":[] }

请帮忙,提前谢谢。

【问题讨论】:

    标签: json jmeter jmeter-plugins


    【解决方案1】:

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

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

    $..levelID
    

    对于ff808181620ce25501620d08e4dc0061,选择匹配号 4 和其他匹配号 3

    它将返回两个不同的变量以及您请求的两个值。

    【讨论】:

      【解决方案2】:
      1. JSR223 PostProcessor 添加为返回 JSON 以上的请求的子项
      2. 将以下代码放入“脚本”区域:

        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())
        
      3. 完成后,您可以将最内部的 levelID 引用为 ${innterMost},在需要时将其父级引用为 ${parentOf}

      参考资料:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-09
        • 1970-01-01
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        相关资源
        最近更新 更多