我需要從 JSON 中(反)序列化一些data class由 Gradle 插件生成的 es。通常我只會使用像 Moshi 這樣的庫,或者kotlinx.serialization將正確的注釋添加到我想要序列化的類中,但是,因為這個data classes 是自動生成的,所以這是一個問題。
我想避免手動將生成的所有欄位映射data class到我可以(反)序列化的其他類,或者為所有這些撰寫自定義配接器,data class所以我想知道是否有另一種方式來告訴,例如,kotlinx.serialization即一個類@Serializable不必將注釋直接放在類本身的頂部。
或者,是否有更好的方法將字串轉換為生成的實體data class?
uj5u.com熱心網友回復:
kotlinx.serialization支持為 3rd 方類生成序列化程式。我們需要在 中使用forClass引數@Serializer,例如:
data class MyData(val data: String)
@Serializer(forClass = MyData::class)
object MyDataSerializer
fun main() {
val data = MyData("foo")
println(Json.encodeToString(MyDataSerializer, data))
}
您可以在官方檔案中閱讀更多內容:https ://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#deriving-external-serializer-for-another-kotlin-class-experimental
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/494701.html
