【问题标题】:Why do I get a StackoverflowError on when Groovy JsonBuilder tries to serialize an Expando?为什么当 Groovy JsonBuilder 尝试序列化 Expando 时会出现 StackoverflowError?
【发布时间】:2013-01-02 15:20:11
【问题描述】:

我在尝试序列化 Expando 时收到 StackoverflowError(未追溯到我的代码)。用 groovy shell 转载:

... groovy-2.0.6/bin/groovysh new groovy.json.JsonBuilder(new Expando(name:'hello')).toString()
FATAL: java.lang.StackOverflowError
java.lang.StackOverflowError
        at java.lang.Exception.<init>(Exception.java:77)
        at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:54)
        at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
...

这应该可以吗?

【问题讨论】:

    标签: groovy expando jsonbuilder


    【解决方案1】:

    哇..这是一个错误。貌似是1.8.8引入的

    适用于 1.8.6:

    groovy-1.8.6/bin/groovysh new groovy.json.JsonBuilder(new Expando(name:'hello')).toString();
    
    ===> {"name":"hello"}
    

    1.8.8 的 StackoverflowError:

    groovy-1.8.8/bin/groovysh new groovy.json.JsonBuilder(new Expando(name:'hello')).toString();
    FATAL: java.lang.StackOverflowError
    java.lang.StackOverflowError
    

    看起来在 2.1.0rc1 上提交了一个错误:https://issues.apache.org/jira/browse/GROOVY-5918

    【讨论】:

    • 很好,submitted a pull request 希望能修复它
    • 拉取请求已被接受,因此 2.1.0 的下一个版本(最终版本或 rc3,如果有)应该可以工作
    • 看起来它已在 2.0.7、2.1.0 和 2.1.0-rc-3 中修复 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多