2012-08-22 62 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