【发布时间】:2026-02-16 01:20:04
【问题描述】:
我经常会在 Kotlin 中创建一个内部用于数据模型的数据类。示例:
data class MyDataModel(
var id: String? = null,
var ownerId: String,
var name: String,
var isPrivate: Boolean = false,
)
我经常需要将这些类序列化为 JSON。问题是某些类属性不可为空,并且在某些情况下我需要在序列化中排除这些字段。我还没有找到一种干净简单的方法来做到这一点。我目前使用的解决方案是不使用不可为空的属性,然后将那些我不想序列化的属性设置为空。
还有其他方法吗?
【问题讨论】:
-
你用什么来序列化/反序列化?有多种方法取决于此。
-
Gson。 Kotlin 也有自己的序列化,但现阶段确实还不成熟。我不需要反序列化。只是序列化。
-
在这种情况下,我建议使用此处提供的一种方式baeldung.com/gson-exclude-fields-serialization
-
我知道该解决方案。只是为了获得空序列化而过于复杂。
-
是的,它适用于 kotlin,是的,您只需要添加 @JsonIgnore。我们使用 jackson 是因为它带有 spring(我们几乎所有的服务都在 kotlin 中)。您将需要使用 jackson-module-kotlin(它位于主 maven 存储库中)。问题是,我不知道您的其余代码是否知道杰克逊是否在各个方面都比 gson 更好,但至少在这种特殊情况下,它要容易得多。你可以在这里看到 7 号 baeldung.com/jackson-field-serializable-deserializable-or-not(顺便说一句,我不隶属于 baeldung)
标签: kotlin