Groovy JsonBuilder调用方法来添加信息

时间:2014-03-11 22:10:21

标签: groovy jsonbuilder

以下代码可以正常使用

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

为什么会发生这种情况,我该如何解决这个问题? 感谢

1 个答案:

答案 0 :(得分:2)

我认为这是由构建闭包链时方法writeNumbers未知的潜在错误引起的。

您需要更改:

writeNumbers(delegate, "myNumbers")

this.writeNumbers(delegate, "myNumbers")

它会起作用......但有趣的是,这个感觉就像一个错误...我会调查我是否有空闲时间; - )

编辑:找到显示相同内容的this previous question