首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BSONTimestamp的KMongo序列化

BSONTimestamp的KMongo序列化
EN

Stack Overflow用户
提问于 2017-06-29 22:07:50
回答 3查看 267关注 0票数 1

我正在尝试用Kotlins KMongo库来序列化一个BSONTimestamp。但是在MongoDb中,我只看到它的字符串表示。

代码语言:javascript
复制
"someVal" : {
    "inc" : 1,
    "time" : 1495104096
}

我需要为Jackson添加一些注释才能正确地序列化它吗?

EN

回答 3

Stack Overflow用户

发布于 2017-06-30 12:12:18

我怀疑这与KMongo有什么关系,但你可以试着把它报告给github的问题。作者对此反应很快。

但是,我将其理解为Jackson序列化问题,因此在我看来,解决该问题的最好方法是创建一个类似于

代码语言:javascript
复制
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)

票数 0
EN

Stack Overflow用户

发布于 2017-06-30 17:33:40

答案很简单,我用错了BSONTimestamp类。由于某种原因,有两个,一个在org.bson中,另一个在org.bson.types中。使用来自org.bson的类,KMongo内置的序列化程序完成了它的工作--嗯!

票数 0
EN

Stack Overflow用户

发布于 2017-07-01 01:32:55

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

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

很抱歉,我看到你全部使用大写的BSON,并认为你的意思是做一些更高级的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44827478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档