我正在尝试使用带有jackson支持的json4s来序列化scala案例类。但是对于我试图混合特征的情况,它无法序列化类。下面是一个代码示例。
trait ISearchKey {
var id:String = ""
}
当我执行下面的代码时,我得到空的大括号,没有值序列化,但如果我删除特征mixin,那么CrystalFieldInfo值会被正确序列化
val fld = new CrystalFieldInfo("Field1") with ISearchKey
fld.id = "Id1"
implicit val formats = Serialization.formats(NoTypeHints)
val ser = write[CrystalFieldInfo with ISearchKey](fld)
println(ser)
非常感谢对这个问题的任何见解。提前致谢
答案 0 :(得分:2)
为了使Json4s序列化不仅仅是案例类成员变量,你需要为你的格式变量添加一个FieldSerializer,如下所示:
implicit val formats = DefaultFormats + FieldSerializer[ISearchKey]()
val ser = write[CrystalFieldInfo with ISearchKey]
println(ser) // should include the "id" field from the ISearchKey trait
有关FieldSerializers的更多信息:https://github.com/json4s/json4s#serializing-fields-of-a-class