2017-09-14 94 views
2

我在Jersey 2.17上有一個RESTful API,Jackson在JDK8上有一個RESTful API。它是JSON風格的API。該API接受一個Java對象,它有這個領域:無法反序列化java.sql.Timestamp的實例超出VALUE_NUMBER_FLOAT標記

@JsonProperty("processEndTime") 
public Timestamp getRunDate() { 
    return runDate; 
} 

@JsonProperty("processEndTime") 
public void setRunDate(Timestamp runDate) { 
    this.runDate = runDate; 
} 

現在,當我提出一個小數目,它完美的作品是這樣的:

"processEndTime" : 1434989360, 

但當數量是大的失敗,像這樣:

"processEndTime" : 1434989360380, 

最奇怪的是,我有一個JMeter測試時,它發出的確切同樣大的數字,它可以通過沒有任何問題。我可以在服務器端驗證此號碼,並確認它已正確傳遞。

完整的錯誤信息是:

在[來源無法反序列化的java.sql.Timestamp實例出來VALUE_NUMBER_FLOAT令牌:org.glassfish.jersey.me[email protected]23117fbd;行:1,列:562](通過參考鏈:com.abc.api.dto.MyClassA [「processEndTime」])

有什麼建議嗎?

回答

0

我找出問題:

我做了一些在請求數據轉換:

JSONObject analysis = new JSONObject(templateAnalysis3); 
    data = analysis.toString(); 

這個ToString函數將長期數字轉換到E格式:

1434989360380 -> 1.43498936038E12 

這款E格式不受支持並導致此故障。

data = templateAnalysis3; 

我通過直接使用templateAnalysis3固定它

相關問題