【发布时间】:2020-08-11 07:40:08
【问题描述】:
我有一个用 Kotlin 编写的 android 应用程序。我有许多类,对于每个类,我使用 Gson's toJson 和 fromJson 函数。例如:
class A{
fun toJson():String {
return Gson().toJson(this)
}
fun fromJson(jsonString:String):A{
return Gson().fromJson(jsonString, A::class)
}
}
我还有一堂课B:
class B{
fun toJson():String {
return Gson().toJson(this)
}
fun fromJson(jsonString:String):B{
return Gson().fromJson(jsonString, B::class)
}
}
我使用它的方式是创建一个类的实例,然后调用该方法(注意:我正在另一个类中创建这个类的一个实例(class A):
val a = A()
a.toJson()
但我现在正试图将其转换为 kotlin 多平台项目,但不确定如何在 kotlin 多平台中进行 to 和 from json 转换。
我尝试像这样创建期望函数:
expect fun toJsonClassA():String
expect fun fromJsonClassA(jsonString: String): A
class A{
}
然后将它们实现为这样的实际实现:
actual fun toJsonClassA(): String {
return Gson().toJson(A::class.java)
}
使用上述平台特定的实现,我无法使用类名的实例调用toJsonClassA 或fromJsonClassA 函数。
这行不通:
val a = A()
a.toJsonClassA()
任何关于如何在 Kotlin Multiplatform 中实现 Json 序列化和反序列化的帮助或建议将不胜感激。
【问题讨论】:
-
Gson只是 JVM,因此您需要在其他地方使用其他东西。如果你追求 JS,你可以尝试使用github.com/Kotlin/kotlinx.serialization -
@al3c 我知道,目前,我只在 android 和 iOS 之后。你有什么图书馆可以帮助我吗?
-
Kotlinx.serialization 也适用于 iOS,因为它可以编译为原生。
-
@GiorgosNeokleous 谢谢,我会试试看的。
标签: android json kotlin kotlin-multiplatform