-
Notifications
You must be signed in to change notification settings - Fork 36
Closed
Milestone
Description
Try serializing empty Groovy class using Groovy 3.0.9 and jackson-jr-objects:2.13.1:
import com.fasterxml.jackson.jr.ob.JSON
import groovy.transform.CompileStatic
class MyBean {}
@CompileStatic
class JsonTest {
static void main(String[] args) {
println JSON.std.asString(new MyBean())
}
}
It'll fail with StackOverflowError
:
at com.fasterxml.jackson.jr.ob.impl.JSONWriter.writeBeanValue(JSONWriter.java)
at com.fasterxml.jackson.jr.ob.impl.BeanWriter.writeValue(BeanWriter.java)
at com.fasterxml.jackson.jr.ob.impl.JSONWriter._writeValue(JSONWriter.java)
at com.fasterxml.jackson.jr.ob.impl.JSONWriter.writeBeanValue(JSONWriter.java)
at com.fasterxml.jackson.jr.ob.impl.BeanWriter.writeValue(BeanWriter.java)
at com.fasterxml.jackson.jr.ob.impl.JSONWriter._writeValue(JSONWriter.java)
at com.fasterxml.jackson.jr.ob.impl.JSONWriter.writeBeanValue(JSONWriter.java)
at com.fasterxml.jackson.jr.ob.impl.BeanWriter.writeValue(BeanWriter.java)
This happens because every class file generated from Groovy class contains getMetaClass
method, which contains data with meta-information with cyclic references inside. The method is marked with @java.beans.Transient
annotation, so if serialization automatically skips such properties, the problem will be solved.
dovchinnikov and Shounaks
Metadata
Metadata
Assignees
Labels
No labels