无法在groovy中从映射中获取值

无法在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":"

我有一个JSON响应,如下所示

{  
 "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')

    演示:

  • 我认为JSR223采样器中没有
    prev
    速记,我的期望是您需要切换到或


  • 你能指出代码失败的确切位置吗?异常详细信息应该显示这一点。您已将
    randomValue
    转换为
    String
    ,然后调用了
    randomValue.get('value')
    ,因此它抛出
    groovy.lang.MissingMethodException:没有方法签名:java.lang.String.get()适用于参数类型:(java.lang.String)
    这很简单。@SzymonStepniak有什么解决办法吗?如果我有多个孩子在选项下,我该怎么办。我指的是选项(0)、选项(1)等,我需要从中同时选择这两个选项