使用杰克逊的ser / deser:无法写一个serdes类

时间:2013-10-05 16:26:03

标签: json serialization jackson deserialization

我有一个POJO,我试图使用杰克逊服务/ deser。 但是,我希望该类提供自己的ser / deser逻辑。所以我可以这样写:

@JsonDeserialize(using = MyClass.class)
@JsonSerialize(using = MyClass.class)
class MyClass ... {

    private String x;
    private String y;

    // getters and setters

    void serialize(MyClass object, JsonGenerator jsonGenerator,
        SerializerProvider serializerProvider) throws IOException {
            ....
    }

    MyClass deserialize(JsonParser jsonParser,
        DeserializationContext deserializationContext) throws IOException {
            ....
    }
}

我不想写两个类来为我定义的每个POJO提供ser / deser逻辑。

  1. 我可以使用任何类型的代理机制来实现这一点 JsonSerializer和JsonDeserializer是抽象类而不是接口?
  2. 这是否违反了良好做法?
  3. 初步研究:

    • 关于堆栈溢出的问题
    • This讨论。

1 个答案:

答案 0 :(得分:1)

没有;你不能创建一个实现两个抽象类的类。因此,如果直接实现这些类,则需要两个单独的类。

至于代理:有什么好处?写入的功能数量是相同的;如果存在共性,则将它们抽象为实用类。那你解决的实际问题是什么? (假设这不仅仅是个人偏好的问题)