我想将 JSON Array(in String) 解析为多个类的 Kotlin Array。是否可以像下面那样进行序列化?我正在使用kotlinx.serialization,但如果需要,可以使用其他库。
abstract class DataTypeBase(val dataType: DataTypeEnum) {
abstract fun doSomething()
}
@Serializable
data class DataTypeA(dataType: DataTypeEnum, val a: String): DataTypeBase(dataType) {}
@Serializable
data class DataTypeB(dataType: DataTypeEnum, val b: Int) : DataTypeBase(dataType) {}
fun customSerializer(): KSerializer {
when (json.dataType) {
DataTypeEnum.A -> return DataTypeA.serializer()
DataTypeEnum.B -> return DataTypeB.serializer()
}
}
fun run() {
val dataArray: Array<DataTypeBase> =
Json().parse(ArrayListSerializer(customSerializer(), jsonArrayInString)
}
例如,
[{ dataType: "A", a: "text" }, { dataType: "B", b: 123 }]
变成
Array[0] : DataTypeA("A", "text")
Array[1] : DataTypeB("B", 123)