【发布时间】:2015-03-04 04:42:43
【问题描述】:
我正在使用 java 8 java.time.LocalDate 来解析日期。
但试图将 LocalDate 对象插入 mongodb。我在 java 驱动程序中遇到错误:
private def writeData(measure: DBCollection, installation: Int, date: String, dates: ListBuffer[LocalDate],
values: ListBuffer[BigDecimal], validated: Boolean, overwrite: Boolean) {
val timeValues: BasicDBList = new BasicDBList
var i = 0
while ( i < dates.size ) {
val obj: BasicDBObject = new BasicDBObject("time", dates(i))
obj.put("value", values(i).toString())
timeValues.add(obj)
i += 1
}
if ( debug ) System.out.println("Storedata: " + timeValues.toString) <-- error here
错误日志:
java.lang.RuntimeException: json 无法序列化类型:class java.time.LocalDate 在 com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:77) 在 com.mongodb.util.JSONSerializers$MapSerializer.serialize(JSONSerializers.java:317) 在 com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:79) 在 com.mongodb.util.JSONSerializers$IterableSerializer.serialize(JSONSerializers.java:290) 在 com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:79) 在 com.mongodb.util.JSON.serialize(JSON.java:54) 在 com.mongodb.util.JSON.serialize(JSON.java:40) 在 com.mongodb.BasicDBList.toString(BasicDBList.java:38) 在 web.MeasureAccess.writeData(MeasureAccess.scala:203) 在 web.MeasureAccess.firstTime(MeasureAccess.scala:52) 在 web.MeasureAccess$.main(MeasureAccess.scala:262) 在 web.MeasureAccess.main(MeasureAccess.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
我正在使用 mongo-java-driver-2.13.0-rc1.jar 斯卡拉 2.11.4 和 java 1.8.0_25
为了完整性。
【问题讨论】: