2016-09-20 63 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