【发布时间】:2014-09-23 15:12:47
【问题描述】:
我有这段代码,我试图通过它来设置一个键的值(一个 json 节点id)。但它没有设置值。 Log.info 语句显示正确的值。
Key= context.expand( '${#Project#key}' )
Value= context.expand( '${#Project#value}' )
Binding binding = new Binding()
binding.setVariable("v", "$Value")
binding.setVariable("k", "$Key")
log.info(binding.getVariable("v")) // gives me the value 1234
log.info(binding.getVariable("k")) // gives me the value request.id
def SetKey = new GroovyShell(binding).evaluate( "k=v")
有人可以评论一下这段代码有什么问题吗?以及如何纠正它。
编辑:问题说明
在 SoapUI 中,我在 request.id 和 request.app.id 这样的数据源中保存了一些 json 节点,并且我通过上面的 Key 和 Value 获取的 Value 列中有预期值。我希望在运行时将 json 节点的值更改为其各自的值。因此,对于数据源的每次迭代,它都应该设置该特定 json 节点的正确值。在上面的代码之前,我已经通过 json slurper 解析了我的 json 请求,在上面的代码之后,我再次通过 Json builder 构建 json 并运行请求。解析和运行请求工作正常,只是我无法设置 json 节点的值。
【问题讨论】:
-
请描述您的问题,而不仅仅是损坏的解决方案。
-
@SiKing,感谢您的回复。对不起,如果我缺乏解释。我已经编辑了原始问题。
-
前几天我刚问过这个问题:stackoverflow.com/a/25901091/3124333
-
@SiKing 这就是我正在尝试的。我试过
def SetKey = new GroovyShell(binding).evaluate( "k=v")、evaluate( 'k="v"')和evaluate( 'k="$v"')。但它没有显示请求中更改的值。在第一种情况下,当我执行log.info(SetKey)时,它显示了正确的值,但当我在脚本日志中打印出整个请求时却没有。有什么我忘记返回到我再次构建请求的主脚本的地方吗? -
@SiKing 我想这可能是我的问题,但我不知道如何克服这个问题。如果分配发生在 GroovyShell 上下文中,我将如何使该分配影响在主脚本上下文中构建的请求。任何想法将不胜感激。谢谢!