2015-08-17 6 views
2

Это то, что мой класс выглядит -Джексон: может ли json указать тип цели?

public class A { 
    private Map<String, Object> objects = null; 
    .... 
} 

Мой JSON будет как -

{ 
    "f1" : { 
     "name" : "some name", 
     "val" : 3 
    }, 
    "f2" : { 
     "arg": { 
      some field/value pairs 
     } 
    } 
} 

То, что я хочу, чтобы указать в самом тип, к которому он может быть десериализации в формате JSON. Таким образом, значение для f1 будет преобразован в объект класса B и f2 бы преобразуются в объект C.

Мой код будет выглядеть следующим образом -

Object o = objects.get("f1"); 
if (o instanceof B) { 
    ... 
} else if (o instanceof C) { 
    ... 
} 

Есть ли способ сделать это? Я хочу, чтобы json контролировал десериализацию.

+0

Спасибо @ Karthikeyan Vaithilingam за редактирование этого. Любые предложения о том, как это сделать? – anindyaju99

+2

http://stackoverflow.com/questions/7161638/how-do-i-use-a-custom-serializer-with-jackson это может помочь. –

ответ

0

Да, Джексон может использовать идентификатор типа, если у него есть документ JSON. Обычно это делается с помощью аннотации @JsonTypeInfo.

Существует несколько способов добавления/использования идентификатора типа, как в том, как он включен в документ JSON, так и в отношении того, какой тип идентификатора используется (имя типа или имя класса Java?).

Самый простой способ увидеть, как обстоят дела, это начать с POJO, добавить аннотацию @JsonTypeInfo и сериализовать ее, чтобы увидеть вид произведенного JSON. И как только вы поняли, как работают включения, вы можете изменить, если необходимо, структуру определения класса JSON и/или Java.

Смежные вопросы