JAXB和复杂的地图

时间:2010-08-09 07:31:41

标签: java jaxb

我正在尝试通过JAXB编组/解组Map<String, Map<String, Serializable>>。有两个问题: 1. JAXB无法处理复杂的地图。 2. JAXB无法处理接口(在此上下文中为Serializable)。 一个人应该如何通过JAXB获得这个?

2 个答案:

答案 0 :(得分:1)

我认为主要问题是接口,因为JAXB应该能够编组Map&lt; String,ConcreteType&gt;。接口的问题是JAXB demarshalling不知道用于实现接口的具体类型。编组流可能不是来自Java代码,因此流不能包含具体类型信息。 JAXB必须选择一个实现,它需要帮助才能做到这一点。

JAXB: How should I marshall complex nested data structures

Mapping your favorite class

JBoss Built-in JAXB Providers

这是Web服务编组的常见问题。一种可靠的方法是使用包含具体类型的数据传输对象,这些类型可以在WSDL中为数据传输进行精确定义。您必须在应用程序代码中将域对象映射到这些DTO中,这是一个缺点。这种方法的一个好处是您的应用程序与数据传输格式松散耦合。

答案 1 :(得分:0)

据我所知,XML不支持Map类型。所以你可以尝试像这样使用

<item key="somekey" value="hello" />

但您需要自己检查重复的密钥。