我有一个Kotlin对象,我尝试使用Gson进行序列化。作为委托设置的成员不会被序列化。如果我直接调用它,则委托工作正常,onChange回调也是如此,但Gson会忽略它。
有没有办法在不编写自定义序列化器的情况下让Gson序列化它?
这是我试图做的简化示例:
有没有办法在不编写自定义序列化器的情况下让Gson序列化它?
这是我试图做的简化示例:
class MyDelegate() {
fun getProperty(): String {
return "myDelegate Property"
}
fun observableDelegate(onChange: () -> Unit): ReadWriteProperty<Any?, String> {
return object: ReadWriteProperty<Any?, String> {
override fun getValue(thisRef: Any?, property: KProperty<*>): String {
return getProperty()
}
override fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
TODO("not implemented")
}
}
}
}
class MyTest(delegate: MyDelegate, val property0: String = "property0" ) {
val property1 = "property1"
var property2 = "property2"
var property3: String by delegate.observableDelegate {
// onChange called
}
}
测试它的方法有:
@Test
fun testDelegate() {
val t1 = MyTest(MyDelegate())
val s1 = Gson().toJson(t1)
Assert.fail(s1)
}
输出:
{"property1":"property1","property2":"property2","property0":"property0"}