小编joe*_*oel的帖子

如何使用 micronaut 序列化和注释来序列化具有多态属性的类?

我按照本指南使用带有 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)

jackson kotlin micronaut

5
推荐指数
1
解决办法
943
查看次数

标签 统计

jackson ×1

kotlin ×1

micronaut ×1