2016-06-25 6 views
0

オブジェクトFeed.typeに基づいて任意のタイプのものとすることができるのjavaにJSONのネストされたフィールドを変換するには、次の

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

Feed.object私のクラスです。しかし、クラスのドキュメントをelasticsearchにアップロードすると、ドキュメントがすべてフェッチされたときに、org.codehaus.jackson.map.ObjectMapperFeed.objectLinkedHashMapに変換します。実際のオブジェクトを取得する方法はありますか? JSONの文字列はFeedのものです。続き

は変換です:

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

'@ JsonTypeInfo'です。 –

答えて

1

あなたはFeedクラスのtypeの値に応じてobjectclassが何であるかを示すために@JsonTypeInfoを使用することができます。例えば、

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; 
} 
関連する問題