Scala MongoDB,重写编解码器以写入/读取数组[字节]

Scala MongoDB,重写编解码器以写入/读取数组[字节],mongodb,scala,nosql,Mongodb,Scala,Nosql,我正在使用 我正在为一个CC定义编解码器 lazy val userInfoCodec: Codec[UserInfo] = new Codec[UserInfo] { override def encode(writer: BsonWriter, value: UserInfo, encoderContext: EncoderContext): Unit = ??? override def decode(reader: BsonReader, decoderContext

我正在使用

我正在为一个CC定义编解码器

 lazy val userInfoCodec: Codec[UserInfo] = new Codec[UserInfo] {

    override def encode(writer: BsonWriter, value: UserInfo, encoderContext: EncoderContext): Unit = ???
    override def decode(reader: BsonReader, decoderContext: DecoderContext): UserInfo = ???
}
我在里面做加密,所以字段不是字符串而是数组[字节]。 您知道如何使用BsonWriter在那里写入字节数组吗? 我看到了一些像WriteStarray这样的东西,但我不知道如何使用它


谢谢你的帮助

我认为您不需要编写一个真正的BSON
数组
,但是您可以查看以
字节[]
作为其数据参数的。(
BsonWriter
API公开了一种写入
BinaryData
的方法。)另一个选项是在加密后将
字节[]
编码为Base64
字符串。
case class UserInfo(ab: Array[Byte])

val userInfoCodec: Codec[UserInfo] = new Codec[UserInfo] {
  override def getEncoderClass: Class[UserInfo] = classOf[UserInfo]

  override def encode(writer: BsonWriter, value: UserInfo, encoderContext: EncoderContext): Unit = {
    val bsonBinary = new BsonBinary(value.ab)
    writer.writeBinaryData(bsonBinary)
  }



  override def decode(reader: BsonReader, decoderContext: DecoderContext): UserInfo = {
    val bsonBinary = reader.readBinaryData()
    UserInfo(bsonBinary.getData)
  }
}