2016-09-06 101 views
0

我继承了一些使用Jackson 1.9.2的遗留代码,并且想将它升级到Jackson 2.x.争论的一点是:Jackson 1的StdSerializerProvider是否有杰克逊2?

class CustomObjectMapper extends ObjectMapper { 
    CustomObjectMapper(KeySerializer keySerializer) { 
     // StdSerializerProvider doesn't exist in Jackson 2.x 
     final StdSerializerProvider sp = new StdSerializerProvider(); 
     sp.setNullValueSerializer(new NullSerializer()); 
     sp.setDefaultKeySerializer(keySerializer); 
     setSerializerProvider(sp); 
    } 
} 

我遇到的问题是,StdSerializerProviderexists in Jackson 1.9.x,但不是在杰克逊2.x版本有没有一个等同的类来保存现有的行为?或者根本不需要替换?

回答

2

DefaultSerializerProvider必须是你要找的。请注意,它们和Jackson 1.x的StdSerializerProvider都是SerializerProvider的子类。他们也有非常相似的方法。

请注意,StdSerializerProvider是一个具体的类,而DefaultSerializerProvider是抽象的。但是,您可以创建一个新的DefaultSerializerProvider.Impl来创建具体的类。

+0

这个和'StdSerializerProvider'都实现了接口'SerializerProvider',所以我相信这是我正在寻找的。我注意到这个类是抽象的,但是你可以使用'new DefaultSerializerProvider.Impl()'来获得一个具体的类。 – Thunderforge