我正在将我的 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 支持的库。