跳过基于值序列化泛型中的 GSON 字段

问题描述 投票:0回答:0

在使用 GSON 将 Kotlin 数据类序列化为 JSON 时,我们需要区分可选字段与可为空字段(即,当存在一个字段时,它可以为空)。

最初的想法是将可选字段建模为泛型:

class Optional<T>(val isPresent: Boolean = false, val value: T) {}

这将允许在以下可序列化数据类中表示它:

data class SimpleRequest (
    val a: Int = 0,
    val b: Optional<String> = Optional<String>(value = "")
    val c: Optional<String> = Optional<String>(value = "")
    val d: Int? = null,
    val e: Optional<Int?> = Optional<Int?>(value = null)
)

这将导致以下序列化变体(启用空序列化):

SimpleRequest(c = Optional<String>(true, "Hello"), e = Optional(true, null))
{
   "a": 0,
   "c": "Hello",
   "d": null,
   "e": null
}

这可能吗?

java json kotlin serialization gson
© www.soinside.com 2019 - 2024. All rights reserved.