【问题标题】:Groovy JsonBuilder call methods to add informationGroovy JsonBuilder 调用方法添加信息
【发布时间】:2014-03-11 22:10:20
【问题描述】:

以下代码运行良好

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

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

【问题讨论】:

    标签: groovy jsonbuilder


    【解决方案1】:

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

    你需要改变:

    writeNumbers(delegate, "myNumbers")
    

    this.writeNumbers(delegate, "myNumbers")
    

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

    编辑:发现 this previous question 显示相同的内容

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2013-06-25
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      相关资源
      最近更新 更多