Groovy JsonBuilder 调用方法添加信息

标签 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

为什么会发生这种情况以及如何解决它? 谢谢

最佳答案

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

您需要更改:

writeNumbers(delegate, "myNumbers")

this.writeNumbers(delegate, "myNumbers")

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

编辑:找到this previous question这显示了同样的事情

关于Groovy JsonBuilder 调用方法添加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22337746/

相关文章:

java - Groovy:无法将类 'null' 的对象 'null' 转换为类 'double' 。尝试改为 'java.lang.Double'

java - 具有两个输出的重构方法

arrays - 如何使用带有 .each 的 groovy jsonbuilder 创建数组?

javascript - 从 Grails Controller 获取复选框值

regex - 使用正则表达式解析 ssh-config 文件

c# - c# RSACryptoServiceProvider 中的指数和模数是什么类型的数据?

grails - 在Grails中具有嵌套数组的Groovy JSONBuilder

json - 在Groovy中使用多个数组构建JSON

java - @JsonbTypeDeserializer 和 @JsonbTypeSerializer 在字段中不起作用

json - Groovy JsonBuilder 在 toString() 时的奇怪行为