我正在使用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无法序列化类型:com.mongodb.util.JSONSerializers $
MapSerializer.serialize(JSONSerializers)上com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:77)的类java.time.LocalDate
.java:317)com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:79)com.mongodb.util.JSONSerializers
$
IterableSerializer.serialize(JSONSerializers.java:290)com.mongodb.util.ClassMapBased
com.mongodb.util.JSON.serialize(JSON.java:54)处com.mongodb.util.JSON.serialize(JSON.java:40)处com.mongodb.BasicDBList.toString处的serialize(ClassMapBasedObjectSerializer.java:79)
(web.MeasureAccess.writeData(MeasureAccess.scala:203)的web.MeasureAccess。(BasicDBList.java:38)。Web上的firstTime(MeasureAccess.scala:52)。web.MeasureAccess.main(MeasureAccess.scala:262)在sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)在web.MeasureAccess.main(MeasureAccess.scala)在sun.reflect。
com.intellij.rt.execution处java.lang.reflect.Method.invoke(Method.java:483)上的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)上的NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
.application.AppMain.main(AppMain.java:134)DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)上的java.lang.reflect.Method.invoke(Method.java:483)DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)上的java.lang.reflect.Method.invoke(Method.java:483)
我正在使用mongo-java-driver-2.13.0-rc1.jar Scala 2.11.4和Java 1.8.0_25
为了完整性。
不幸的是,MongoDB驱动程序使用该java.util.Date
类型,请参见此处的文档
因此,您必须首先将LocalDate转换为Date实例,例如:
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("testcol");
LocalDate ld = LocalDate.now();
Instant instant = ld.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
BasicDBObject doc = new BasicDBObject("localdate", date);
coll.insert(doc);
我建议使用类似吗啡或Jongo包裹MongoDB的驱动程序,虽然,以含蓄做对飞这些转换,您可以注册全球映射器,这样就可以使用LOCALDATE的,等等,在你的领域模型
问题内容: 我正在使用Java 8 java.time.LocalDate来解析日期。 但是尝试将LocalDate对象插入到mongodb中。我在Java驱动程序中收到错误: 错误日志: java.lang.RuntimeException:json无法序列化类型:com.mongodb.util.JSONSerializers $ MapSerializer.serialize(JSONSer
问题内容: 我试图序列化和反序列化内部对象的数组列表: HairList对象也是一个可序列化的对象。 此代码执行返回以下错误: 排队 我不知道我在做什么错。你能给个小费吗? 更新: 解决: 仅使用HairBirt的本机数组而不是ArrayList即可工作: 代替 感谢大家的帮助。 问题答案: 不要使用-而是使用二进制数据并对它进行base64编码,以将其转换为字符串而不会丢失信息。 我强烈怀疑这是
问题内容: 我正在使用python包pymongo从mongodb数据库中检索数据。 然后我转换为列表 这是print(l)返回的内容: 现在,我需要转换为JSON,以便可以对其进行操作。 我还尝试遵循 http://api.mongodb.org/python/1.7/api/pymongo/json_util.html 失败:编辑:链接的最新版本为http://api.mongodb.org/
我试图反序列化javax.ws.rs.core.MultiValuedHashMap。 MultivaluedHashMap实现java.io.Serializable,并且有一个公共的、没有arg构造函数。 提前感谢你的帮助。
我从 REST API 获得以下 JSON 作为响应。 并尝试使用下面的代码进行解析,但这不会导致正确的反序列化类型。 下面是我在JSON响应中收到的字段的类。 缺少了什么?
我正试图将流数据从Kafka保存到卡桑德拉。我能够读取和解析数据,但是当我调用下面的行来保存数据时,我会得到一个异常。我的类正在扩展序列化,但不确定为什么我会看到这个错误,在谷歌搜索了3个小时后没有得到多少帮助,有没有人能给出任何指示? 我得到了 sparkException:任务不可序列化 下面是完整的日志 16/08/06 10:24:52错误JobScheduler:运行作业流作业14705