android - moshi kotlin 非构造函数属性未序列化

标签 android kotlin moshi

我有一个这样定义的类:

data class Medicalnfo(
            @Json(name = "allergies") val allergies: List<Allergy>? = null
    ): ProfileModel(){
        @Json(name = "has_allergies") val hasAllergies: Boolean = allergies != null && allergies.isNotEmpty()
    }

问题在于 hasAllergies 未包含在 Moshi 生成的 json 序列化中。如何实现这一目标?

这是测试

@Test
fun medicalInfoJsonContainsFlags(){
    val adapter = moshi.adapter(Medicalnfo::class.java)
    val jsonStr = adapter.toJson(Medicalnfo(allergies = listOf())) //value is {"allergies":[]}
    assert(jsonStr.contains("has_allergies"))
}

最佳答案

如果你将 hasAllergies 设置为 var 它将起作用

data class Medicalnfo(
            @Json(name = "allergies") val allergies: List<Allergy>? = null
): ProfileModel(){
     @Json(name = "has_allergies") var hasAllergies: Boolean = allergies != null && allergies.isNotEmpty()
}

关于android - moshi kotlin 非构造函数属性未序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50665352/

相关文章:

java - 当 Activity 重新启动时, Activity 的 fragment 如何恢复?

android - AlertDialog MultiChoiceItems 监听器问题

android - 膨胀类 android.support.v7.widget.CardView ClassNotFoundException 时出错

android - 仅当添加 AdMob 时应用程序在首次打开时崩溃,但在下次打开时运行正常

android - 导入 rxJava 时出现 META-INF 错误

java - 拖动和缩放图像时出现无法访问的错误

android - 使用 Android Observer/Livedata/Coroutine/Kotlin 实现 Redux

jsonparser - 无法用 Moshi 解析 Json 字符串

android - 使用 InputStream 进行 Moshi 解析

Moshi:PolymorphicJsonAdapterFactory 是否可以获取 withDefaultValue 中的类型?