如何将java.sql.Date对象添加到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)

尝试将日期对象添加到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) {
  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
的实例。