使用Gson API将日期字符串(Unix格式)转换为Java日期';s

使用Gson API将日期字符串(Unix格式)转换为Java日期';s,java,mongodb,gson,Java,Mongodb,Gson,我正在尝试使用Gson Api将json字符串日期时间转换为java日期对象,其中我的json字符串日期为unix格式(“CreatedOn”:“/date(1421909004755+0530)/”)。我的java代码是 MyJsonbuilder.java is having code GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = gsonBuilder.create(); LogService book = gson.f

我正在尝试使用Gson Api将json字符串日期时间转换为java日期对象,其中我的json字符串日期为unix格式(“CreatedOn”:“/date(1421909004755+0530)/”)。我的java代码是

MyJsonbuilder.java is having code

GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
LogService book = gson.fromJson(dbDocument, LogService.class);
BasicDBObjectBuilder bs = new BasicDBObjectBuilder();
bs.append("CreatedOn", book.getCreatedOn());
其中LogService.Java具有getter和setter

public Date getCreatedOn() {
    return CreatedOn;
}


public void setCreatedOn(Date CreatedOn) {

    this.CreatedOn = CreatedOn;

}

但gson API不能采用我发送的这个日期格式,而是采用当前日期。然而,如果我将getter和setter从Date更改为String,它就可以正常工作。

更多的问题是,像这样格式化的字符串是从哪里来的。在“+”之前的数值实际上表示时间戳值(以毫秒为单位)。您可能会更好地在源代码中使用正则表达式对其进行分类。像这样的格式化字符串不应该出现在JSON中,也不应该存储在您的集合中。它的日期是unix格式的,我只是尝试使用getter和setter将其转换为Java日期格式,但gson不支持它。有解决方案吗?我要告诉你的是,我提到的“数字”部分确实是Unix格式的。但是整个字符串源是垃圾。因此,建立一个通用的解析器来处理这个问题并不是一个好主意,而是修复它。这些数据来自哪里?这是一个外部JSON源,还是它在MongoDB中的存储方式?这是一个外部JSON源,我正在尝试将其转换为java date格式,然后将其放入MongoDB中。在这里,我只是试图引导您朝着一个积极的方向前进。这是来自商业API的外部JSON源(很难相信,因为它非常糟糕),还是来自您自己的项目团队中的某个人,或者至少是您可以讨论的某个地方?看起来这是一个非常糟糕的工作,在序列化输出中转储JavaScript日期构造函数。这真的很糟糕,不是怎么做的。您应该避免编写代码来处理这些问题,并在理想情况下更正源代码。