Serialización KMongo de BSONTimestamp

Estoy intentando serializar un BSONTimestamp con Kotlins KMongo lib. Pero dentro de MongoDb solo veo su representación de Cadena.

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

¿Debo poner alguna Anotación para que Jackson la serialice correctamente?

Dudo que esto tenga algo que ver con KMongo en realidad, pero puedes intentar informarlo a los problemas de github. El autor es muy receptivo

Sin embargo, lo leí como un problema de serialization de Jackson, así que la mejor manera de resolverlo en mi opinión sería crear una regla de serialization similar a

 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) }) } } 

No sé exactamente qué se espera que BSONTimestamp guarde, así que puede que tenga que modificarlo un poco, pero una vez que se defina el module, regístrelo con Jackson Mapper como

KMongoConfiguration.extendedJsonMapper.registerModule(BSONTimestampModule)

Parece que te refieres a BsonTimestamp, que sí es el que mongo-java usa por defecto (y no tiene nada que ver con KMongo en realidad). BSONTimestamp es una implementación especial utilizada "internamente" para mongo y normalmente no se supone que deba ser utilizada por ninguna persona externa. Lo mismo es cierto para todo en el package org.bson.types. Esos no son sus contratos normales y son más para las interacciones de nivel binary o de nivel de controller con mongo.

BsonTimestamp (en el package org.bson) es de hecho el tipo de datos real que se obtiene a través de cualquiera de las transformaciones de date mongos a / desde.

Siento haber visto que utilizas todas las BSON mayúsculas y asumiste que querías hacer algo más avanzado.

El autor fue bastante simple, utilicé la class incorrecta BSONTimestamp. Por alguna razón, hay dos, uno en org.bson y uno en org.bson.types . Con la class de org.bson, la creación de KMongo en el serializador hace su trabajo, ¡duh!

  • ¿Qué significa `impl` en Kotlin?
  • ¿Hay algún documento sobre modificadores de acceso en Kotlin?
  • No puedo contactar a ningún miembro de la class de una class anidada en Kotlin
  • El elemento TornadoFx ItemViewModel es nulo
  • ¿Cómo adjunto fonts para Kotlin en Android Studio?
  • Extraño error de "Referencia no resuelto:" después de actualizar a Kotlin 1.0.5
  • La function miembro no se puede usar como argumento
  • Android Kotlin comienza una nueva actividad
  • Cómo extender una class de datos con toString
  • Firebase y recuperación de elementos
  • Mutar cadena de una extensión