在Groovyshell中执行变量代码

在Groovyshell中执行变量代码,groovy,groovyshell,Groovy,Groovyshell,考虑一下这段代码 def RespJson = RespSlurper.parseText(content) def RespNode= "RespJson"+"."+ assertionKey 其中,assertionKey将在每次迭代中动态更改,并具有类似于seirid[0].bid[0].impid的值 如何在Groovyshell中执行以下代码,我正在尝试 def v def a = new Binding(RespJson: RespJson) new Groov

考虑一下这段代码

 def RespJson = RespSlurper.parseText(content)    
 def RespNode= "RespJson"+"."+ assertionKey
其中,
assertionKey
将在每次迭代中动态更改,并具有类似于
seirid[0].bid[0].impid的值

如何在Groovyshell中执行以下代码,我正在尝试

def v    
def a = new Binding(RespJson: RespJson)
new GroovyShell(a).evaluate(" v=${RespNode}")
log.info(v)
但是我得到的v值为
null
。感谢您的帮助。谢谢

编辑:

def RespSlurper = new JsonSlurper()
def content = step.testRequest.response.responseContent
content
的值为

{  
   "seatbid":[  
      {  
         "bid":[  
            {  
               "id":"1",
               "impid":"1",
               "price":3.5999999046325684,
               "nurl":"http:...",
               "adomain":[  
                  "zagg.com",
                  "zagg.com"
               ],
               "iurl":"http:...",
               "crid":"30364.s320x50m",
               "h":0,
               "w":0
            }
         ],
         "group":0
      }
   ],
   "cur":"USD",
   "nbr":0
}

我有下面的代码,我认为这是问题的浓缩版本

在这种情况下,似乎可以从绑定中检索
v
变量,即
a
。绑定在
变量
对象上有可用的变量

此外,由于GroovyShell计算的脚本与
v
设置的脚本相同,因此打印GroovyShell对象的输出也将打印“1”

import groovy.json.JsonSlurper
def RespSlurper=new JsonSlurper()
def内容=“{”SEADID:“{”bid:“[{”id:“1”,“impid:“1”,“价格”:3.5999909046325684,“nurl:“http:”,“adomain:“[”zagg.com”,“zagg.com“],”iurl:“http:”,“crid:“30364.s320x50m”,“h:“0”,“w:”0}],“group:”0}],“cur:“USD”,“nbr:”0}'
def RespJson=RespSlurper.parseText(内容)
def assertionKey=“座椅ID[0]。投标[0]。impid”
def RespNode=“RespJson”+“+断言键
def v
def a=新绑定(RespJson:RespJson)
def result=newgroovyshell(a).evaluate(“v=${RespNode}”)
println(v)
//重要的补充!

println(result)您能否提供一个可以在groovyshell中测试的完整示例?这其中有未知的部分(例如
RespSlurper
content
)。谢谢。另外,除了返回值之外,还有
def data=[a:[1,2,3]];断言3==Eval.x(数据,“x.a[2]”
。然而,我认为路径
RespNode
只会产生
null
。@mnd感谢您的回复。我用答案编辑了这个问题。谢谢。成功了。没有意识到正确的结果在
结果中。此外,我还学习了如何使用
变量
对象。在
Groovyshell
中。
import groovy.json.JsonSlurper

def RespSlurper = new JsonSlurper()
def content = '{"seatbid":[{"bid":[{"id":"1","impid":"1","price":3.5999999046325684,"nurl":"http:...","adomain":["zagg.com","zagg.com"],"iurl":"http:...","crid":"30364.s320x50m","h":0,"w":0}],"group":0}],"cur":"USD","nbr":0}'
def RespJson = RespSlurper.parseText(content)
def assertionKey = "seatbid[0].bid[0].impid"
def RespNode= "RespJson"+"."+ assertionKey
def v
def a = new Binding(RespJson: RespJson)
def result = new GroovyShell(a).evaluate("v=${RespNode}")
println(v)
// Important addition!
println(result)         <=== print the value of the GroovyShell, it will show "1"
println(a.variables.v)  <=== retrieve the "v" variable off of the binding, it will show "1"