首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加信息的Groovy JsonBuilder调用方法

添加信息的Groovy JsonBuilder调用方法
EN

Stack Overflow用户
提问于 2014-03-11 22:10:20
回答 1查看 713关注 0票数 2

以下代码工作正常

代码语言:javascript
复制
def json = new JsonBuilder()

json {
  writeNumbers(delegate, "myNumbers")
}

println json.toPrettyString()

def writeNumbers(json, name) {
  json."$name" {
      "w" 32
      "h" 32
  }
}

但是,一旦我在另一个“范围”中移动或添加一个writeNumbers调用,我就会得到一个堆栈溢出异常;就像这样

代码语言:javascript
复制
def json = new JsonBuilder()

json {
  scopes {
    writeNumbers(delegate, "myNumbers")
  }
}

println json.toPrettyString()

def writeNumbers(json, name) {
  json."$name" {
      "w" 32
      "h" 32
  }
}

结果:

代码语言:javascript
复制
Caught: java.lang.StackOverflowError
java.lang.StackOverflowError

为什么会发生这种事,我怎么才能绕过它呢?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-11 22:35:38

我认为这是由于构建闭包链时方法writeNumbers未知这一潜在错误造成的。

你需要改变:

代码语言:javascript
复制
writeNumbers(delegate, "myNumbers")

代码语言:javascript
复制
this.writeNumbers(delegate, "myNumbers")

它会成功的..。有趣的是,这感觉就像个虫子.如果我有空闲时间,我会调查的;-)

编辑:找到this previous question,它显示了相同的东西

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22337746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档