我有以下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数据类中的默认值。但是,当存在中间的字段对时,反序列化失败并显示以下信息:
我知道我可以通过将
nullBoolField
和nullStringField
的类型分别更改为Boolean?
和String?
来解决此问题,但是由于已知默认值,因此我宁愿不必将null
的处理进一步推到代码中。问题是:当JSON中存在该属性但将其设置为null时,是否可以将Jackson配置为使用Kotlin数据类默认值用于非空属性?
最佳答案
您可以先尝试从json
过滤空值,然后再将其反序列化为Kotlin对象。
或者,您可以尝试将功能添加到kotlin-jackson
模块,并添加新的功能参数,这将启用从json参数忽略的空值并使用默认值。
您可以通过修改line来做到这一点(如果我没记错的话)
关于jackson - 用Jackson反序列化时忽略空字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48735608/