我有一个杰克逊问题.
有没有办法反序列化可能有两种类型的属性,对于某些对象,它看起来像这样
"someObj" : { "obj1" : 5, etc....}
Run Code Online (Sandbox Code Playgroud)
然后对于其他人来说,它看起来像一个空数组,即
"someObj" : []
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
谢谢!
为了解决我在这个线程中讨论的类型不匹配问题,我创建了自定义Deserializers并将它们添加到ObjectMapper.然而,性能随之显着恶化.
使用默认的解串器,我可以获得1-2个垃圾收集调用,logcat而使用自定义解串器时,至少有7-8个GC调用,因此处理时间也会显着增加.
我的解串器:
public class Deserializer<T> {
public JsonDeserializer<T> getDeserializer(final Class<T> cls) {
return new JsonDeserializer<T> (){
@Override
public T deserialize(JsonParser jp, DeserializationContext arg1) throws IOException, JsonProcessingException {
JsonNode node = jp.readValueAsTree();
if (node.isObject()) {
return new ObjectMapper().convertValue(node, cls);
}
return null;
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用它添加到Mapper
public class DeserializerAttachedMapper<T> {
public ObjectMapper getMapperAttachedWith(final Class<T> cls , JsonDeserializer<T> deserializer) {
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule(deserializer.toString(), …Run Code Online (Sandbox Code Playgroud)