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