KMongo序列化的BSONTimestamp

我试图用Kotlins KMongo lib序列化一个BSONTimestamp。 但在MongoDb中,我只能看到它的字符串表示。

"someVal" : { "inc" : 1, "time" : 1495104096 } 

我需要给Jackson一些注释来正确地序列化它吗?

我怀疑这实际上与KMongo有什么关系,但你可以尝试报告给github的问题。 作者非常敏感。

不过,我把这个作为一个Jackson的序列化问题来解读,所以在我看来,解决这个问题的最好办法是创建一个类似于

 object BSONTimestampModule : SimpleModule("BSONTimestampModule") { init { addSerializer(BSONTimestamp::class.java, object : JsonSerializer<BSONTimestamp>() { override fun serialize(value: BSONTimestamp?, gen: JsonGenerator, serializers: SerializerProvider?) = gen.writeString(value?.time) }) } } 

我不知道BSONTimestamp预计会保存什么,因此您可能需要稍微调整一下,但是一旦模块被定义,就可以像Jackson Mapper那样注册它

KMongoConfiguration.extendedJsonMapper.registerModule(BSONTimestampModule)

听起来就像是你指的是BsonTimestamp那么哪个是mongo-java默认使用的(和KMongo实际上没有任何关系)。 BSONTimestamp是一个特殊的实现,用于“内部”mongo,通常不会被任何外部的人使用。 org.bson.types包中的所有内容也是如此。 这些不是您的正常合同,更多是与mongo进行二元级别或驱动程序级别的交互。

BsonTimestamp(在org.bson包中)实际上是通过任何mongos日期转换返回的实际数据类型。

对不起,我看到你使用了全部大写的BSON,并假设你打算做更先进的事情。

anwser很简单,我使用了错误的BSONTimestamp类。 出于某种原因,有两个org.bsonorg.bson.types中的一个。 有了org.bson中的类, KMongo在Serializer中构建起来了 – 呃!