反序列化序列化对象时出现问题

时间:2018-12-17 10:05:02

标签: java kotlin jackson deserialization

  • 我有一个kotlin数据类,具有一个参数化的构造函数,以及一个基于属性派生其输出的方法。
  • 我已经用@JsonProperty注释了此方法,以便它的派生输出也可以序列化以输出JSON,这是我的要求。
  • 现在,当我尝试反序列化此JSON时会出现此问题,并且找不到派生属性的任何字段
  

无法构造MyDataClass的实例,问题:永远不要调用   set()关于无设置属性('derivedProp')

@JsonIgnoreProperties(ignoreUnknown = false)
data class MyDataClass(
   val boolProp: Boolean = true,
   val dataProp: DataProp = DataProp(),
   val mainProp: String? = null
) : Serializable {

   @JsonProperty
   @Suppress("unused")
   fun derivedProp(): List =
      someLogicOnMainProp(mainProp)

}

2 个答案:

答案 0 :(得分:0)

如果使用属性而不是函数,则仍可以定义一个setter并在调用它时忽略它。不是最漂亮的解决方案,但可以解决问题:

@get:JsonProperty
var derivedProp: List<Any>
    get() = someLogicOnMainProp(mainProp)
    set(value) { /* do nothing */ }

答案 1 :(得分:0)

我使用@JsonProperty批注的以下属性解决了此问题:

@JsonProperty(access = Access.WRITE_ONLY)