Kotlin 通过Jackson序列化'Nothing?'属性
我想通过Jackson序列化Kotlin 通过Jackson序列化'Nothing?'属性,kotlin,jackson,Kotlin,Jackson,我想通过Jackson序列化FAIL对象: 接口选项结果{ val数据:结果类型? 对象失败:OptionalResult{ 覆盖val数据:无?=null } } 我得到的是{},但我希望收到{“数据”:null} 我怎样才能固定我的物体 顺便说一下,以下对象已正确序列化: 对象失败:可选结果{ 覆盖val数据:Int?=null } 技术问题是Jackson确定将过滤掉通常指示属性(公共或带注释的setter)存在的指示符,因为getter被视为不返回任何内容的public void ge
FAIL
对象:
接口选项结果{
val数据:结果类型?
对象失败:OptionalResult{
覆盖val数据:无?=null
}
}
我得到的是{}
,但我希望收到{“数据”:null}
我怎样才能固定我的物体
顺便说一下,以下对象已正确序列化:
对象失败:可选结果{
覆盖val数据:Int?=null
}
技术问题是Jackson确定将过滤掉通常指示属性(公共或带注释的setter)存在的指示符,因为getter被视为不返回任何内容的public void getData()
。
过滤是在低级处理中完成的,同时删除静态方法、既不带注释也不遵循命名约定的方法等等
由于void
和void
之间存在实际差异(类似于原语/包装器差异),因此可以改进此检测。
但这是首次报告此类使用情况
您可以尝试一件可能(也可能不)有帮助的事情:为
val数据添加@JsonProperty
。如果只对未注释的访问器进行过滤,则可能会有所帮助。使用@JsonSerialize(using=MyCustomSerializer::class)注释FAIL
对象
有效!然而,这需要额外的9行代码。是否还有其他变体,例如,以某种方式注释数据
。可在此处找到自定义序列化程序的示例: