有一个接口A:
interface A {
val name: String
}
还有一个类B实现了这个接口:
class B() : A {
val implementedName: String = "Test"
override val name: String
get() = implementedName
}
然后我尝试序列化这个类B:
val b: A = B()
Gson().toJson(b)
并得到以下输出:
// Output
{"implementedName":"Test"}
我意识到gson的类型擦除不能推断变量b的类型,但我想看到的是gson序列化接口字段:
// Output
{"name":"Test"}
我怎样才能做到这一点?
1条答案
按热度按时间bfhwhh0e1#
Gson无法做到这一点。使用SerializedName注解Android Studio会强调无法做到这一点。此注解不适用于没有支持字段或委托的目标成员属性。但以这种方式实现它应该可行。
然后使用Gson().toJson(B),输出应为: