下面的代码可以正常工作
def json = new JsonBuilder()
json {
writeNumbers(delegate, "myNumbers")
}
println json.toPrettyString()
def writeNumbers(json, name) {
json."$name" {
"w" 32
"h" 32
}
}
但是一旦我在另一个“范围”内移动或添加 writeNumbers 调用,我就会收到 stackoverflow 异常;就像这样
def json = new JsonBuilder()
json {
scopes {
writeNumbers(delegate, "myNumbers")
}
}
println json.toPrettyString()
def writeNumbers(json, name) {
json."$name" {
"w" 32
"h" 32
}
}
结果:
Caught: java.lang.StackOverflowError
java.lang.StackOverflowError
为什么会发生这种情况以及如何解决它? 谢谢
最佳答案
我认为这是由构建闭包链时 writeNumbers
方法未知的潜在错误引起的。
您需要更改:
writeNumbers(delegate, "myNumbers")
至
this.writeNumbers(delegate, "myNumbers")
它会起作用...不过有趣的是,这感觉像一个错误...如果我有空闲时间我会调查;-)
编辑:找到this previous question这显示了同样的事情
关于Groovy JsonBuilder 调用方法添加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22337746/