带有默认值的 Kotlin-moshi 代码生成继承

Sun*_*ike 6 android kotlin moshi

如果我有一个开放类并从中继承了数据类,则 Kotlin-moshi 代码生成器会跳过默认值。这是预期的行为吗?如何让 moshi-kotlin 解析所有值,包括超类的默认值?

@JsonClass(generateAdapter = true)
data class B(val bar: String) : A(foo = "foo")

@JsonClass(generateAdapter = true)
open class A(val foo: String)

val b = B("bar")
Run Code Online (Sandbox Code Playgroud)

adapter.toJson(b)打印{"bar":"bar"}没有通道字段。

Ji *_*ang 2

使您的超类属性可变可以解决您的问题。

@JsonClass(generateAdapter = true)
data class B(val bar: String) : A(foo = "foo")

@JsonClass(generateAdapter = true)
open class A(var foo: String)
Run Code Online (Sandbox Code Playgroud)

输出

{"bar":"bar","foo":"foo"}
Run Code Online (Sandbox Code Playgroud)