【发布时间】:2018-07-21 23:33:29
【问题描述】:
我有以下 Kotlin 数据类:
data class TestObject(
val boolField: Boolean,
val stringField: String,
val nullBoolField: Boolean = true,
val nullStringField: String = "default",
val notThereBoolField: Boolean = true,
val notThereStringField: String = "not there"
)
然后,我尝试使用 Jackson v2.9.4 和 Jackson Kotlin 插件 v2.9.4.1 将一些 JSON 反序列化到此类中。测试JSON如下:
{
"boolField": true,
"stringField": "string",
"nullBoolField": null,
"nullStringField": null
}
前两个和后两个字段成功反序列化 - 使用来自 JSON 的值和来自 Kotlin 数据类的默认值,视情况而定。但是,当中间的一对字段存在时,反序列化会失败并显示:
[简单类型,类 com.example.TestObject] 值的实例化 由于缺少 JSON 属性 nullStringField 失败(因此 NULL) 创建者参数 nullStringField 的值,它是 不可为空的类型
我知道我可以通过将 nullBoolField 和 nullStringField 的类型分别更改为 Boolean? 和 String? 来解决问题,但由于默认值是已知的,我宁愿没有通过这样做将null 的处理进一步推到代码中。
问题是:当属性存在于 JSON 中但设置为 null 时,是否有任何方法可以配置 Jackson 以将 Kotlin 数据类默认值用于不可为 null 的属性?
【问题讨论】:
-
你找到答案了吗,我还是同样的问题,暂时解决不了...?