2016-09-20 42 views
0

由於舊的項目決策,我使用Jersey來連接到返回XML數據的服務。有時候,我可以創建bean/POJO /不管用XmlRootElement註釋和使用webTarget.get(MyPojo.class)Jersey XML到地圖

但是,如果我嘗試做什麼,我會用,比方說,傑克遜做,做webTarget.get(Map.class)我收到以下錯誤:

MessageBodyReader not found for media type=text/xml, type=interface java.util.Map, genericType=interface java.util.Map. 

我的情況是,我有一個可以有任意字段的XML,所以我讀取它的理想方式是讀取一個Map。有什麼辦法可以做到這一點,而不必依賴於其他圖書館?我不需要序列化數據,只需反序列化我連接的Web服務的響應。

回答

0

找到了答案,它有點令人沮喪。

根據Unofficial JAXB Guide,您不能使用Map作爲根元素,除非您做了非常醜陋的黑客攻擊,在那裏描述。所以,解決方案是:

  1. 閱讀爲String,並使用Jackson從字符串中讀取Map
  2. 做醜陋的黑客。
  3. 描述bean中模式的一部分,但可以有可變字段的部分可以被反序列化爲Map