You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2021/12/18 15:36:00 UTC
[jira] [Updated] (GROOVY-7682) JsonBuilder or JsonOutput incompatible with JodaTime
[ https://issues.apache.org/jira/browse/GROOVY-7682?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Milles updated GROOVY-7682:
--------------------------------
Labels: DateTime, Json StackOverflowError (was: DateTime, Json)
> JsonBuilder or JsonOutput incompatible with JodaTime
> ----------------------------------------------------
>
> Key: GROOVY-7682
> URL: https://issues.apache.org/jira/browse/GROOVY-7682
> Project: Groovy
> Issue Type: Bug
> Components: JSON
> Affects Versions: 2.4.5
> Environment: JVM: 1.8.0_65 (Oracle)
> Mac OS X 10.11.1 (El Capitan)
> Reporter: Jean-Philippe Pellerin
> Priority: Major
> Labels: DateTime,, Json, StackOverflowError
>
> Using groovy's built-in methods to serialize Joda DateTime to JSON always conclude in a {{StackOverflowError}}.
> {code:title=ExampleMethod|type=java}
> package com.mgd
> import groovy.json.JsonOutput
> import org.joda.time.DateTime
> import org.joda.time.format.DateTimeFormat
> import org.joda.time.format.DateTimeFormatter
> import com.sun.beans.util.Cache.Kind.Strong
> class JodaBugJson {
> public static void main(String[] args) {
> DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS z")
> DateTime dt = formatter.parseDateTime("2015-11-20 13:37:21.123 EST")
> // String json = new JsonBuilder(dt).toString() //same outcome
> Strong json = JsonOutput.toJson(dt)
> println "\n${json}\n"
> }
> }
> {code}
> Running the above will result in :
> {code: title=Error}
> Exception in thread "main" java.lang.StackOverflowError
> at org.codehaus.groovy.reflection.ClassInfo.getClassInfo(ClassInfo.java:119)
> at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:261)
> at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:871)
> at org.codehaus.groovy.runtime.DefaultGroovyMethods.getMetaPropertyValues(DefaultGroovyMethods.java:364)
> at org.codehaus.groovy.runtime.DefaultGroovyMethods.getProperties(DefaultGroovyMethods.java:383)
> at groovy.json.JsonOutput.writeObject(JsonOutput.java:290)
> at groovy.json.JsonOutput.writeMap(JsonOutput.java:424)
> at groovy.json.JsonOutput.writeObject(JsonOutput.java:294)
> at groovy.json.JsonOutput.writeMap(JsonOutput.java:424)
> at groovy.json.JsonOutput.writeObject(JsonOutput.java:294)
> at groovy.json.JsonOutput.writeMap(JsonOutput.java:424)
> ...
> {code}
> Whether this be only the date, or an object including a Joda DateTime the outcome is the same.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)