无法从 groovy 中的地图获取值

Unable to fetch value from Map in groovy

我有一个 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)

在此方面的帮助很有用并表示感谢!

  1. 您的 randomValueLinkedHashMap 的实例,因此您可以将 "label" 提取为 randomValue.get('label') 并将 "value" 提取为 randomValue.get('value')相应。

    演示:

  2. 我不认为你在 JSR223 采样器中有 prev shorthand,我的期望是你需要切换到 JSR223 PostProcessor or JSR223 Assertion