2016-06-25 87 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將轉換爲LinkedHashMap。有沒有辦法獲得實際的物體?我得到的JSON字符串是Feed。

以下是轉換:

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

'@ JsonTypeInfo'。 –

回答

1

您可以使用@JsonTypeInfo指出哪些是根據typeFeed類價值的objectclass。例如,

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; 
} 
相關問題