salat serialize Map [Enum,Boolean]类型

时间:2016-07-27 19:40:19

标签: mongodb scala casbah salat

您好我想使用salat将枚举作为密钥序列化/解除对DBObject的一些映射。

object MyEnum extends Enumeration {
  val VAL_ONE, VAL_TWO = Value
}
case class CanBeStored(a:Enumeration.Value)

case class CanNotBeStored(a:Map[Enumeration.Value,Boolean])
// Produces exception[[ClassCastException: com.mongodb.BasicDBObject cannot be cast to scala.collection.immutable.Map]]

据我所知,使用当前版本是不可能的。 https://groups.google.com/forum/#!topic/scala-salat/s3Q548NM8yc

但可能存在一些圆形的方法吗?真正的问题是我有一个相当深的嵌套案例类模型,它描述了我的Mongo数据模型,我不能只将序列化改为自定义实现。

可能是我可以为Map [MyEnum.Value,Boolean]直接构建一些自定义Transformer但是如何?

1 个答案:

答案 0 :(得分:1)

是的,您可以实现自定义转换器,它可以将存储在mongo中的String键转换为枚举对象。

请参阅:How to customize serialization behavior without annotations in Salat?