无法在groovy中从映射中获取值
我有一个JSON响应,如下所示无法在groovy中从映射中获取值,groovy,jmeter,jmeter-3.2,jsr223,Groovy,Jmeter,Jmeter 3.2,Jsr223,我有一个JSON响应,如下所示 { "id":27, "merchant_id":"39", "title":"Shorts", "subtitle":null, "price":100, "description":null, "images":[ ], "image_thumbs":[ ], "options":[ { "code":"size", "label":"Size", "extra_info":"
{
"id":27,
"merchant_id":"39",
"title":"Shorts",
"subtitle":null,
"price":100,
"description":null,
"images":[
],
"image_thumbs":[
],
"options":[
{
"code":"size",
"label":"Size",
"extra_info":"",
"values":[
{
"label":"Small",
"value":"4"
},
{
"label":"Medium",
"value":"5"
}
]
}
],
"options_available":[
{
"combination":[
{
"code":"size",
"value":"Small"
}
]
},
{
"combination":[
{
"code":"size",
"value":"Medium"
}
]
}
],
"custom_options":[
]
}
我在JSR223采样器中有如下代码:
import com.jayway.jsonpath.JsonPath
import org.apache.commons.lang3.RandomUtils
import org.apache.jmeter.samplers.SampleResult
def options = JsonPath.read(prev.getResponseDataAsString(), '$.options')
def randomOption = options.get(RandomUtils.nextInt(0, options.size()))
def code = randomOption.get("code")
vars.put('code1', code)
def values = randomOption.get('values')
def randomValue = values.get(RandomUtils.nextInt(0, values.size())) as
String
def FValue = randomValue.get('value')
vars.put('ValueF', FValue)
vars.put('randomValue', randomValue)
在调试上述代码时,我能够按预期将随机值设置为[label:Small,value:4]/[label:Medium,value:5]。但是,我无法从输出中获取值
Getting error as
javax.script.ScriptException: javax.script.ScriptException:
groovy.lang.MissingMethodException: No signature of method:
java.lang.String.get() is applicable for argument types: (java.lang.String)
values: [value]
Possible solutions: getAt(java.lang.String), next(), grep(),
getAt(groovy.lang.EmptyRange), grep(java.lang.Object),
getAt(java.util.Collection)
在这方面的帮助是有用的,非常感谢
randomValue
是的一个实例,因此您可以相应地将“label”提取为randomValue.get('label')
和“value”提取为randomValue.get('value')
演示:
prev
速记,我的期望是您需要切换到或你能指出代码失败的确切位置吗?异常详细信息应该显示这一点。您已将
randomValue
转换为String
,然后调用了randomValue.get('value')
,因此它抛出groovy.lang.MissingMethodException:没有方法签名:java.lang.String.get()适用于参数类型:(java.lang.String)
这很简单。@SzymonStepniak有什么解决办法吗?如果我有多个孩子在选项下,我该怎么办。我指的是选项(0)、选项(1)等,我需要从中同时选择这两个选项