我按照本指南使用带有 Jackson 注释的 Micronaut 序列化。当我创建一个抽象Base类和一个Derived类时,我可以使用@JsonTypeInfo和@JsonSubTypes来正确序列化该类的对象Derived。
OtherClass但是,当我序列化具有类型Base但具有运行时类型的属性的对象 时Derived,该属性将序列化为Base。
下面的代码应该可以解释我的问题。请注意,我正在使用io.micronaut.serde.ObjectMapper,当我将其替换为它时com.fasterxml.jackson.databind.ObjectMapper,它会按预期工作。
有没有办法让它使用注释来工作?
import com.fasterxml.jackson.annotation.JsonSubTypes
import com.fasterxml.jackson.annotation.JsonTypeInfo
import io.kotest.core.spec.style.ShouldSpec
import io.kotest.matchers.string.shouldContain
import io.micronaut.serde.ObjectMapper
import io.micronaut.serde.annotation.Serdeable
import io.micronaut.test.extensions.kotest.annotation.MicronautTest
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "class")
@JsonSubTypes(JsonSubTypes.Type(Derived::class))
@Serdeable
abstract class Base(val baseProperty: String = "baseProperty")
@Serdeable
class Derived : Base()
@Serdeable
class OtherClass(val otherProperty: Base)
@MicronautTest
class SerializeTest(objectMapper: ObjectMapper) : ShouldSpec({ …Run Code Online (Sandbox Code Playgroud)