我正在将我的 Android 应用程序迁移到多平台,并且我有一个带有四个子类的抽象类。
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes(value = [
JsonSubTypes.Type(value = Image::class, name = "image"),
JsonSubTypes.Type(value = Video::class, name = "video"),
JsonSubTypes.Type(value = Audio::class, name = "audio"),
JsonSubTypes.Type(value = Text::class, name = "text")
])
abstract class Data: MyParcelable {
...
}
我向 commonMain 添加了以下依赖项:
implementation(libs.jackson.module.kotlin)
implementation(libs.jackson.datatype.jsr310)
implementation(libs.jackson.annotation)
不幸的是,当 iosX64 或 iosArm64 作为目标处于活动状态时,我无法导入 com.fasterxml.* 包。
我找不到任何关于fasterxml jackson是否支持ios和桌面多平台开发的声明。您有关于在 kmp 项目中使用注释的信息吗?
Jackson 是用 Java 编写的,而不是 Kotlin。
因此,它将支持 JVM 和 Android 目标,但我不希望它可用于 iOS 或 Web(Wasm 或 JS)。
您可能会考虑使用 kotlinx 序列化,以及 这个库 来支持 XML。