UTC 日期到长转换:Gson - 预计很长但 BEGIN_OBJECT
UTC Dates to Long conversion: Gson - Expected a long but was BEGIN_OBJECT
我正在尝试将 mongoDB BasicDBObject(称为 'document')转换(解码?)为 POJO,但是 Gson 遇到了 expiryTime,这是一个 UTC日期 (2013-10-08T10:00:00.000Z).
这是 scala 命令:
gson.fromJson(document.toString(), classOf[MyObj])
我读到注册 TypeAdapter 可能会有用,它看起来像这样:
val gson: Gson = new GsonBuilder().registerTypeAdapter(classOf[org.joda.time.DateTime], new DateTimeTypeConverter).serializeNulls.create
关于如何为这个日期问题注册 TypeAdapter 有什么想法吗?
错误:
Expected a long but was BEGIN_OBJECT
POJO:
public class MyObj {
private IdObj id;
private String uid;
private Long expiryTime;
}
public class IdObj {
private String guid;
private Long timestamp;
}
JSON:
{
"_id":{
"guid":"guid",
"timestamp":1381226400000
},
"uid":"uid",
"expiryTime":{
"$date":"2013-10-08T10:00:00.000Z"
}
}
我正在使用 Scala 2.10。
我添加了两行来将 java.util.Date 日期更新为 Long,以便我可以对其进行解码。这是 Scala 代码:
def decodeDocument(document : BasicDBObject) : MyObj = {
val currentTime : Date = Objects.firstNonNull[java.util.Date](document.get("expiryTime").asInstanceOf[java.util.Date], new Date())
document.put("expiryTime", currentTime.getTime());
gson.fromJson(document.toString, classOf[com.expedia.www.travelgraph.user.news.entities.NewsItem])
}
我正在尝试将 mongoDB BasicDBObject(称为 'document')转换(解码?)为 POJO,但是 Gson 遇到了 expiryTime,这是一个 UTC日期 (2013-10-08T10:00:00.000Z).
这是 scala 命令:
gson.fromJson(document.toString(), classOf[MyObj])
我读到注册 TypeAdapter 可能会有用,它看起来像这样:
val gson: Gson = new GsonBuilder().registerTypeAdapter(classOf[org.joda.time.DateTime], new DateTimeTypeConverter).serializeNulls.create
关于如何为这个日期问题注册 TypeAdapter 有什么想法吗?
错误:
Expected a long but was BEGIN_OBJECT
POJO:
public class MyObj {
private IdObj id;
private String uid;
private Long expiryTime;
}
public class IdObj {
private String guid;
private Long timestamp;
}
JSON:
{
"_id":{
"guid":"guid",
"timestamp":1381226400000
},
"uid":"uid",
"expiryTime":{
"$date":"2013-10-08T10:00:00.000Z"
}
}
我正在使用 Scala 2.10。
我添加了两行来将 java.util.Date 日期更新为 Long,以便我可以对其进行解码。这是 Scala 代码:
def decodeDocument(document : BasicDBObject) : MyObj = {
val currentTime : Date = Objects.firstNonNull[java.util.Date](document.get("expiryTime").asInstanceOf[java.util.Date], new Date())
document.put("expiryTime", currentTime.getTime());
gson.fromJson(document.toString, classOf[com.expedia.www.travelgraph.user.news.entities.NewsItem])
}