Jmeter JSON提取器从列表的最后一项检索第二项
我有一个JSON响应,如下所示Jmeter JSON提取器从列表的最后一项检索第二项,json,jmeter,Json,Jmeter,我有一个JSON响应,如下所示 { "queryStartDate": "20170523134739822", "queryEndDate": "20170623134739822", "Rows": [ { "hasScdHistoryOnly": false, "Values": [ "1", "53265",
{
"queryStartDate": "20170523134739822",
"queryEndDate": "20170623134739822",
"Rows": [
{
"hasScdHistoryOnly": false,
"Values": [
"1",
"53265",
"CO"
]
},
{
"hasScdHistoryOnly": false,
"Values": [
"1",
"137382",
"CO"
]
},
{
"hasScdHistoryOnly": false,
"Values": [
"1",
"310824",
"CO"
]
}
]
}
我使用Jmeter的JSON提取器后处理器从“值”列表的最后一个接收第二个值。i、 e.53265、137382、310824
根据Stefan的介绍,我曾尝试使用
$行[*].Values[-2:-1]
和$行[*].Values[(@.length-2)]
,但它们都不起作用。您能帮我一个忙吗?使用查看结果树的JSon路径测试仪,我可以看到您用于提取值的以下表达式不正确(适用于联机,但不适用于JMeter)
使用的表达式:$。行[*]。值[-2:-1]
JSon路径测试仪的输出:未找到匹配项。
使用的表达式:$.Rows[*].Values[(@.length-2)]
JSon路径测试仪的输出:异常:无法分析从位置16开始的令牌。应为?,',0-9,*
如果使用表达式$.Rows[*].Values[1]
,它将提取所需的响应
使用的表达式:$.Rows[*].Values[1]
JSon路径测试仪的输出:
Result[0]=53265
Result[1]=137382
Result[2]=310824
使用查看结果树
的JSon路径测试仪,我可以看到您用于提取值的以下表达式不正确(适用于联机,但不适用于JMeter)
使用的表达式:$。行[*]。值[-2:-1]
JSon路径测试仪的输出:未找到匹配项。
使用的表达式:$.Rows[*].Values[(@.length-2)]
JSon路径测试仪的输出:异常:无法分析从位置16开始的令牌。应为?,',0-9,*
如果使用表达式$.Rows[*].Values[1]
,它将提取所需的响应
使用的表达式:$.Rows[*].Values[1]
JSon路径测试仪的输出:
Result[0]=53265
Result[1]=137382
Result[2]=310824
我认为JMeter使用的是JayWay JSON路径库,因此您应该查找文档
一般来说,我建议使用JSON路径提取器作为JSON路径提取器的替代方案,两者都只适用于基本场景,当涉及到高级查询和运算符时,它们的行为是不稳定的
将JSR223后处理器添加为返回JSON以上的请求的子级
确保在“语言”下拉列表中选择了“groovy”,并且勾选了“缓存已编译脚本(如果可用)”框
将以下代码放入“脚本”区域
它应生成以下JMeter变量:
yourVar_1=53265
yourVar_2=137382
yourVar_3=310824
这似乎是你在寻找的东西
参考资料:
我认为JMeter使用的是JayWay JSON路径库,因此您应该查找文档
一般来说,我建议使用JSON路径提取器作为JSON路径提取器的替代方案,两者都只适用于基本场景,当涉及到高级查询和运算符时,它们的行为是不稳定的
将JSR223后处理器添加为返回JSON以上的请求的子级
确保在“语言”下拉列表中选择了“groovy”,并且勾选了“缓存已编译脚本(如果可用)”框
将以下代码放入“脚本”区域
它应生成以下JMeter变量:
yourVar_1=53265
yourVar_2=137382
yourVar_3=310824
这似乎是你在寻找的东西
参考资料:
谢谢Adnan,我目前正在使用此方法作为解决方法。我想知道在Jmeter的JSON提取器中,是否有一种方法可以从最后一项向后选择。在这种情况下,可以从第一个选项中选择forward。但是有一种情况是JSON没有标准化,但是需要向后选择。谢谢Adnan,我目前正在使用这种方法作为解决方法。我想知道在Jmeter的JSON提取器中,是否有一种方法可以从最后一项向后选择。在这种情况下,可以从第一个选项中选择forward。但有一种情况是JSON没有标准化,但需要向后选择。