Я бы хотел проанализировать JSON Array (в 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)