泽西XML进入地图

时间:2016-09-20 23:05:36

标签: java xml jersey

由于旧的项目决策,我在使用Jersey连接到返回XML数据的服务的项目上工作。有时我可以创建bean / pojo /用CREATE TABLE `articles_categorys` ( `category_id` int(11) NOT NULL, `category_name` varchar(32) COLLATE utf8_bin NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; CREATE TABLE `article_category_reference` ( `ref_id` int(11) NOT NULL, `article_id` int(11) NOT NULL, `category_id` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `articles_categorys` (`category_id`, `category_name`) VALUES (22, 'Site Info'), (1, 'Editorial'), (2, 'Review'), (3, 'Interview'), (4, 'Game Sale'), (5, 'Steam'), (6, 'Indie Game'), (7, 'Crowdfunding'), (8, 'Game Bundle'), (9, 'Free Game'), (10, 'MMO'); INSERT INTO `article_category_reference` (`ref_id`, `article_id`, `category_id`) VALUES (15, 6231, 22), (14, 6231, 1), (16, 6231, 2), (17, 6231, 3), (18, 6231, 4), (19, 6231, 9), (20, 6231, 10); 注释的任何内容并使用XmlRootElement

但是,如果我尝试做我会做的事情,比如杰克逊,那么webTarget.get(MyPojo.class)我会收到以下错误:

webTarget.get(Map.class)

我的情况是,我有一个可以有任意字段的XML,所以我阅读它的理想方法是阅读Map。有什么方法可以做到这一点,而不必依赖其他图书馆?我不需要序列化数据,只反序列化我连接的Web服务的响应。

1 个答案:

答案 0 :(得分:0)

找到答案,这有点令人沮丧。

根据Unofficial JAXB Guide,你不能使用Map作为根元素,除非你做了一个非常难看的黑客,在那里描述。所以,解决方案是:

  1. String身份阅读,并使用杰克逊从字符串中读取Map
  2. 做丑陋的黑客。
  3. 描述bean中模式的一部分,但可以将包含变量字段的部分反序列化为Map