我正在尝试将mongoDB BasicDBObject(称为“文档”)转换(解码?)为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。
答案 0 :(得分:0)
我添加了两行来将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])
}