首页 > 解决方案 > 带有默认值的 Kotlin-moshi 代码生成继承

问题描述

如果我有一个开放类并从中继承数据类,Kotlin-moshi codegen 会跳过默认值。这是预期的行为吗?如何让 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")

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

标签: androidkotlinmoshi

解决方案


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

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

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

输出

{"bar":"bar","foo":"foo"}

推荐阅读