JMeter帮助处理json提取的数据数组

kxeu7u2r  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(151)

我有下面的JSON提取器在JMeter Json Extractor setupThread structure中运行
它遍历一个对象数组并获取所有ActivityId值,下面的对象是数据结构的一个示例,值已删除,但有一个我需要帮助

{
    "Id": 
    "Date": 
    "SubmitterId": 
    "ImpersonatorId": 
    "ActivityType": 
    "ActivityInformation": {
        "SourceSystem": 
        "SourceId": 
        "SubmitterId": 
        "ImpersonatorId": 
        "ActivityType":
        "ActivityId": "8b238a9e-3a3c-4ed6-8fbf-255e99edb540",
        "SubmissionType":
    }
}

运行时会得到大约700个结果。
当我尝试使用log.info("Test output of json extracted " + "${activityids}")查看通过Groovy后处理器脚本生成的变量值时,
我得到以下错误`2023-08-07 20:50:48,686 ERROR o.a.j.e.JSR223PostProcessor:JSR 223脚本中的问题,JSR 223后处理器javax.script.ScriptException:groovy.lang.MissingPropertyException:无此类属性:类的activityid:脚本13
我需要做的是以某种方式将其转换为id数组,我认为需要将其存储为JMeter变量,然后添加到下一个POST调用的主体中,这些ID将返回更多数据。
所有帮助非常感谢
我知道这些值是存储的,因为我可以在一个foreach控制器中看到它们,并添加一个虚拟采样器来输出值
我只是不知道该怎么做

zmeyuzjn

zmeyuzjn1#

1.你没有activityids变量值,如果你在JSON提取器中使用Match Nr作为-1,你会得到以下创建的JMeter变量:

activityids_1=8b238a9e-3a3c-4ed6-8fbf-255e99edb540
activityids_matchNr=1

1.不建议将JMeter函数或变量内联到Groovy脚本中,因为只有第一个出现的情况才会被缓存并在后续迭代中返回。使用vars简写为JMeterVariables类示例。

log.info("Number of extracted IDs " +  vars.get("activityids_matchNr"))

1.upto(vars.get('activityids_matchNr') as int, index -> {
    log.info(index + ': ' + vars.get('activityids_' + index))
})

更多信息请参阅:

相关问题