2017-09-14 46 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固定它

相关问题