如何将列表的Jackson自定义反序列化器添加到模块中?

时间:2017-03-02 18:31:58

标签: java android jackson jackson-modules jackson-databind

我有自定义反序列化器

class MyListDeserialiser extends JsonDeserializer<List<MyObject>>{

@Override
public List< MyObject > deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {

 ....
    return myListOfObjects; }

}

然后我需要将它添加到Jackson映射器模块

我试过

public class MyModule extends SimpleModule {

public MyModule() {
    super(new Version(1, 0, 0, "", null, null));
    addDeserializer(TypeFactory.defaultInstance().constructCollectionType(List.class, MyObject.class).getClass(),
            new MyListDeserialiser());
}

但那没用。

TypeFactory是正确的方式还是deserialiser定义的问题?

我不想使用注释,所以这是我所知道的唯一其他方法。我不想将功能直接添加到对象映射器,因为我将进行大量的自定义反序列化,并且我希望将所有代码隐藏在模块中。

提前致谢

1 个答案:

答案 0 :(得分:0)

您需要将模块添加到映射器,否则它不会用于(反)序列化。