2012-08-22 98 views
0

我有一个通用的(POJO-)容器与客户分享统计数据:新泽西不能解组java.lang.Number中

@XmlRootElement 
public class StatsSeries implements Serializable { 

    private TreeMap<Date, Number> timeSeries; 

    /* accessor methods */ 
} 

根据数据,服务器存储LongInteger或它Double,这就是为什么我使用抽象java.lang.Number

编组站工作正常,并表示具体类的提示都包含在数据:

  "timeSeries": { 
       "entry": [ 
        { 
         "key": "2012-08-20T00:00:00Z", 
         "value": { 
          "$": "24", 
          "@type": "xs:long" 
         } 
        }, 
        .... 
       ] 
       } 

或者在XML表示:

<timeSeries> 
     <entry> 
     <key>2012-08-20T00:00:00Z</key> 
     <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:long">24</value> 
     </entry> 
     ... 
    </timeSeries> 

当试图来解读这一点,我得到一个javax.xml.bind.UnmarshalException: Unable to create an instance of java.lang.Number。我看到this question,但它不帮助我。我如何注释java.lang.Number?还有其他建议吗?

更新:纵观JAXB-890,据我所知,应该固定或者在JDK 1.7或使用com.sun.xml.bind:jaxb-impl:2.2.6 - 既不是为我工作。

回答

0

不知道这会工作给予类型擦除,但你可以尝试annotating with XmlElementRef

@XmlElementRef 
    private TreeMap<Date, Number> timeSeries; 

“在使用此注释时,XML元素名称是从的JavaBean的类型的实例得出运行时属性“。

如果不成功,请参见if this link helps