自定义增强具有类注释的类型的序列化/反序列化

时间:2018-04-27 20:32:17

标签: json jackson

我想要一堆类似这样的类:

@Special("SpecialThing")
data class MyThing(
    val myVal: String
)

此特定实例的序列化格式为:

{
  "special": "SpecialThing",
  "params": {
    "myVal": "myValValue"
  }
}

我希望能够序列化这些带注释的类型。

我希望做的一些事情:

  1. 将杰克逊注释本身排除在这些类之外(可能使用mixins?)。我要将Jackson特有的序列化与这些类型分开。
  2. 避免将"SpecialThing"作为字段/属性
  3. 使用"special"
  4. 反序列化为正确的类型

    我可能无法一次完成所有这些,但我很难找到正确的杰克逊用来完成我的目标。有一些内置插件与我想要的很接近(如JsonUnwrapped

    我可能会以某种方式使用@JsonTypeInfo和多态继承,但我希望有更清洁,更直接的方法。

    如何处理需要"包装"?

    的这些类型的序列化/反序列化?

1 个答案:

答案 0 :(得分:0)

你可以做得很好,因为你有一个你自己喜欢的注释,杰克森并不关心,但你可以使用@JsonWrapped和mixin做其他事情。

您需要write a custom JSON Serializer来处理注释 这真的很容易。