2016-06-25 5 views
0

Ниже мой классПреобразование вложенных полей JSON в Java объекты

class Feed { 
    Long id; 
    String title; 
    String text; 
    Short type; 
    Object object; 
} 

Feed.object может быть любого типа на основе Feed.type. Когда я загружаю документ класса в elasticsearch, все работает отлично, однако, когда документ извлекается обратно, тогда org.codehaus.jackson.map.ObjectMapper преобразует Feed.object в LinkedHashMap. Есть ли способ получить реальный объект? Я получаю строку JSON от Feed.

Ниже преобразование:

Feed feed = mapper.readValue(response.getHits().getHits()[0].getSourceAsString(), Feed.class); 
+0

'@ JsonTypeInfo'. –

ответ

1

Вы можете использовать @JsonTypeInfo, чтобы указать, что это class из object по значению type в Feed классе. Например,

class Feed { 
    Long id; 
    String title; 
    String text; 
    Short type; 
    @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_POPERTY, propery = "type") 
    @JsonSubTypes({ 
     @JsonSubTypes.Type(value = Foo.class, name = "1"), 
     @JsonSubTypes.Type(value = Bar.class, name = "2") 
    }) 
    Object object; 
} 
Смежные вопросы