在groovy中使用绑定变量设置json键

时间:2014-09-23 15:12:47

标签: groovy soapui

我有这个代码,我试图设置一个Key的值(一个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中,我有一些json节点保存在数据源中,如request.idrequest.app.id,并且我在Key和{{1}获取的值列中存在预期的值} 以上。我希望在运行时将json节点的值更改为其各自的值。因此,对于数据源的每次迭代,它应该设置该特定json节点的正确值。在上面的代码中,我已经通过Value解析了我的json请求,在上面的代码之后,我再次通过json slurper构建json并运行请求。解析和运行请求工作正常,它只是我无法设置json节点的值。

1 个答案:

答案 0 :(得分:0)

如果你的键只是点名,你可以简单地使用一些字符串操作,不需要涉及Groovy解析器。

例如,如果它们都以request开头:

def steps = Key.split(/\./)
if (steps.size() < 2 || steps[0] != 'request') {
    throw ...
}
def obj = request
if (steps.size() > 2) {
    steps[1..-2].each { 
        obj = obj[it] 
    }
}
obj[steps[-1]] = Value