如何将列表的 Jackson 自定义解串器添加到模块?
How do i add a Jackson custom deserialiser of a list to a module?
我有一个自定义解串器
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 是正确的方法还是反序列化器定义有问题?
我不想使用注释,所以这是我唯一知道的其他方法。我不想将功能直接添加到对象映射器,因为我会有很多自定义反序列化,我想将所有代码隐藏在一个模块中。
提前致谢
您需要将您的模块添加到映射器,否则它不会用于(反)序列化。
我有一个自定义解串器
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 是正确的方法还是反序列化器定义有问题?
我不想使用注释,所以这是我唯一知道的其他方法。我不想将功能直接添加到对象映射器,因为我会有很多自定义反序列化,我想将所有代码隐藏在一个模块中。
提前致谢
您需要将您的模块添加到映射器,否则它不会用于(反)序列化。