相关疑难解决方法(0)

杰克逊反序列化对象或数组

我有一个杰克逊问题.

有没有办法反序列化可能有两种类型的属性,对于某些对象,它看起来像这样

"someObj" : { "obj1" : 5, etc....}
Run Code Online (Sandbox Code Playgroud)

然后对于其他人来说,它看起来像一个空数组,即

"someObj" : []
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

谢谢!

java json jackson

14
推荐指数
2
解决办法
2万
查看次数

杰克逊使用自定义反序列化器进行反序列化会导致大量的GC调用,并且需要更长的时间

为了解决我在这个线程中讨论的类型不匹配问题,我创建了自定义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)

java android json jackson

7
推荐指数
1
解决办法
6430
查看次数

标签 统计

jackson ×2

java ×2

json ×2

android ×1