如何将java.sql.Date对象添加到JSON数组?
尝试将日期对象添加到JSON数组,如下所示:如何将java.sql.Date对象添加到JSON数组?,java,vert.x,Java,Vert.x,尝试将日期对象添加到JSON数组,如下所示: io.vertx.core.json.JsonArray data = new io.vertx.core.json.JsonArray(); try { long millis = System.currentTimeMillis(); java.sql.Date date = new java.sql.Date(millis); data.add(date); } catch (IllegalStateException e)
io.vertx.core.json.JsonArray data = new io.vertx.core.json.JsonArray();
try {
long millis = System.currentTimeMillis();
java.sql.Date date = new java.sql.Date(millis);
data.add(date);
} catch (IllegalStateException e) {
LOGGER.error(e.getMessage());
}
我得到了一个异常“JsonObject中的非法类型:class java.sql.Date”。有什么好办法解决这个问题吗
提前谢谢 您可以直接使用毫秒值的
即时:
data.add(Instant.ofEpochMilli(millis));
如果您真的需要操作java.sql.Date
(我想知道为什么),那么您必须在JsonArray
中添加值之前对其进行转换。例如:
data.add(new java.util.Date(date.getTime()).toInstant());
在这两种情况下,下面是您的JsonArray
的toString
:
["2018-04-02T21:57:16.307Z"]
Instant instant = data.getInstant(0);
java.sql.Date date = new java.sql.Date(instant.toEpochMilli());
如果需要从JsonArray
重新创建java.sql.date
的实例:
["2018-04-02T21:57:16.307Z"]
Instant instant = data.getInstant(0);
java.sql.Date date = new java.sql.Date(instant.toEpochMilli());
附言:这是一个Java>=8的答案谢谢你,伊德里斯,谢谢你的回答!为了保持原始模式不变,我确实需要java.sql.Date对象来为io.vertx.ext.sql.SQLClient.updateWithParams(String,JsonArray,Handler)提供数据。@Ming在读取处理程序中的JsonArray
条目之后,您可以创建java.sql.Date
的新实例。。。处理程序用于处理updateWithParams()的结果,而不是输入参数。@Ming我更新了答案,向您展示了如何从JsonArray
中重新创建java.sql.date
的实例。