Jmeter提取数组中的JSON格式

r7s23pms  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(195)

我想寻求一个帮助,我如何提取这个示例响应的值USDT。非常感谢您的回应。目前这是我如何提取我的USDT使用JSON路径测试器$.. currency[0]。我想使它灵活,而不使用数字,而是包含。有一种方法来模拟这个吗?非常感谢提前

{
    "uid": "123-321",
    "period": "25_minutes",
    "level": "symbol",
    "values": [
        1.3211,
        1.2212
    ],
    "rank_by": "volume",
    "currency": [
        "USDT",
        "SGD"
    ],
    "measurements": [
        0.42,
        0.15
    ],
    "num_instruments": 20,
    "asset_classes": [
        "All"
    ],
    "version": "1.0.0",
    "timestamp": "2022-05-30T03:53:09"
}

我提取的样本响应:

jutyujz0

jutyujz01#

如果您不确定回复中的货币顺序,您可以考虑
1.正在切换到JSON JMESPath Extractor
1.按字母顺序对数组排序

  1. Slicing返回只返回最后一个匹配项的数组(USDT将“低于”SGD

jfgube3f

jfgube3f2#

关于JSON提取器没有线索,但可以通过下面的方法来完成,
1.将JSR223后处理器添加为返回上述JSON的请求的子级
1.将以下代码放入“Script”区域
指令码区块:

def jsonResponse = new groovy.json.JsonSlurper().parse(prev.getResponseData())
    jsonResponse.each { getCurrencyArray ->
            def currencyExpected = "USDT"
              if(getCurrencyArray.getKey() == "currency"){
                        getCurrencyArray.getValue().each { curr ->
                            if (curr.equalsIgnoreCase("USDT")) {
                                vars.put("Cur", currencyExpected )
                                log.info("Cur = " + currencyExpected)
                            }
                        }
              }
    }

使用USDT:

使用多个USDT:

不含USDT:

yvt65v4c

yvt65v4c3#

您可以使用jsonpath-expression来检查数组中是否存在该值

$..currency[?(@ == "USDT")]

相关问题