首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Groovyshell中执行变量代码

在Groovyshell中执行变量代码
EN

Stack Overflow用户
提问于 2015-01-21 16:32:44
回答 1查看 494关注 0票数 3

考虑一下这段代码

代码语言:javascript
复制
 def RespJson = RespSlurper.parseText(content)    
 def RespNode= "RespJson"+"."+ assertionKey

其中,assertionKey将在每次迭代中动态更改,并且具有类似于seatbid[0].bid[0].impid的值。

如何在Groovyshell中执行以下代码?

代码语言:javascript
复制
def v    
def a = new Binding(RespJson: RespJson)
new GroovyShell(a).evaluate(" v=${RespNode}")
log.info(v)

但我得到了v作为null的值。任何帮助都是非常感谢的。谢谢。

编辑:

代码语言:javascript
复制
def RespSlurper = new JsonSlurper()
def content = step.testRequest.response.responseContent

content的值是

代码语言:javascript
复制
{  
   "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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-21 19:54:20

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

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

另外,由于GroovyShell计算的脚本与v设置的脚本相同,所以打印GroovyShell对象的输出也会打印"1“。

代码语言:javascript
复制
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"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28072217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档