在Kotlin中,FasterXML / jackson循环引用,@JsonIdentityInfo和UnresolvedForwardReference异常

我试图使用这个库和

compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: '2.8.5' 

我有类结构这样的点击和代码

 fun main(args: Array<String>) { test() } fun test(){ val mapper = jacksonObjectMapper() val entity2 = Entity2("test_entity2") val entity1 = Entity1("test_entity1") val rootEntity1 = Entity1("root_entity1") entity2.entity1 = rootEntity1 entity1.parent = rootEntity1 entity1.entity2 = entity2 rootEntity1.entity2 = entity2 val json = mapper.writeValueAsString(entity1) println(json) val result = mapper.readValue(json, Entity1::class.java) println(result) } @JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator::class) class Entity1( var name: String = "", var entity2: Entity2? = null, var parent: Entity1? = null ){ override fun equals(other: Any?): Boolean{ if (this === other) return true if (other?.javaClass != javaClass) return false other as Entity1 if (name != other.name) return false return true } override fun hashCode(): Int{ return name.hashCode() } override fun toString(): String{ return "Entity1(name='$name')" } } @JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator::class) class Entity2( var name: String = "", var entity1: Entity1? = null ) { override fun equals(other: Any?): Boolean{ if (this === other) return true if (other?.javaClass != javaClass) return false other as Entity2 if (name != other.name) return false return true } override fun hashCode(): Int{ return name.hashCode() } override fun toString(): String{ return "Entity2(name='$name')" } } 

这个代码抛出异常在线程“主” com.fasterxml.jackson.databind.deser.UnresolvedForwardReference: Could not resolve Object Id [2] (for [simple type, class Entity2]) (through reference chain: Entity1["entity2"]->Entity2["entity1"]->Entity1["entity2"])为JSON

 {"@id":1,"name":"test_entity1","entity2":{"@id":2,"name":"test_entity2","entity1":{"@id":3,"name":"root_entity1","entity2":2,"parent":null}},"parent":3}; 

,但如果提交//rootEntity1.entity2 = entity2代码工作正常。 它的包还是我不明白杰克逊? 如何使其工作?