Moshi 忽略 Kotlin 中的字段

Posted

技术标签:

【中文标题】Moshi 忽略 Kotlin 中的字段【英文标题】:Moshi ignore field in Kotlin 【发布时间】:2018-05-02 06:43:57 【问题描述】:

我想知道在使用 Moshi 时如何忽略 Kotlin 类字段。

我找到了 Java 的这个答案 (Moshi ignore field),这表明使用关键字transient 如下

private transient String your_variable_name;

但我找不到在 Kotlin 中完成这项工作的正确方法。

【问题讨论】:

【参考方案1】:

使用@Transient 注释。

@Transient
private val your_variable_name: String

文档在这里:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-transient/index.html

【讨论】:

像魅力一样工作。谢谢!! 当 JSON 响应中没有预期的字段时,这不起作用。 另外,请确保提供默认值。否则,它可能会引发错误。【参考方案2】:

Kotlin + 改造 + Moshi

如果您想有条件地忽略字段,可以将其设置为 null。

data class  User(var id: String,  var name: string?)

val user = User()
user.id = "some id"
user.name = null

生成的 Json 将是

user
"id": "some id"

【讨论】:

即:@Transient @Json(name= "snow") val snowVolume: Int? = null

以上是关于Moshi 忽略 Kotlin 中的字段的主要内容,如果未能解决你的问题,请参考以下文章

在 Kotlin 中使用 Moshi 和 Retrofit 解析具有增量对象名称的 JSON

Moshi + Kotlin + SealedClass

Moshi 的 Kotlin 代码生成器有啥用?

Moshi 1.9.x 无法序列化 Kotlin 类型

如何在 moshi (kotlin) 中解析 LinkedHashMap

Moshi:解析单个对象或对象列表(kotlin)