2013-04-11 38 views
1

我有以下JSON結構傑克遜JSON反序列化包裝的財產(丟棄信封)

{ 
    "hits" : { 
    "hits" : [ 
     { 
     "_source" : { 
      "title" : "My Title", 
      "description" : "My Description" 
     } 
     } 
    ] 
    } 
} 

這是什麼從彈性搜索返回當我搜索我的索引一本書。

書定義爲Java類型:

class Book { 
    private String title; 
    private String description; 

    //...Getters and setters 
} 

所以在JSON,_source實際上是書。我想將結構反序列化爲Book,我想用一些JsonDeserializer實現。我嘗試了很多不同的方法,但沒有找到任何成功,並且無法在網上找到關於這個主題的任何體面的文檔,我只能說我可能需要實現ResolvableDeserializer,但不知道如何實現它的解決方法,甚至不知道是什麼!有沒有人有任何想法做到這一點或鏈接到解釋?

乾杯 NFV

回答

-1

你並不需要爲這個特殊的JsonDeserializer。你的類是一個簡單的java bean,Jackson可以自動處理這些bean。查看jackson-databind項目的文檔。

+0

我意識到Jackson Databinding可以開箱即用,但是即時通訊的難點在於如何讓它無視信封?我認爲像@JsonRootName(「_源」)可能會這樣做,但沒有運氣。 – nfvindaloo 2013-04-11 17:01:24

+0

整件事情?像hits.hits._source一樣?好吧,這個問題並沒有真正清楚;) – 2013-04-11 17:16:08

+0

對不起,這個ID是喜歡忽略hits.hits,只是得到_source元素(這是Book)。另請注意,hits.hits是_source元素的數組,儘管hits.hits.length == 1總是。我想定製的BeanDeserializer或ResolvableDeserializable的行,但不能找到任何文件如何使用這些? – nfvindaloo 2013-04-11 20:17:21