json4s将继承的类转换为json

时间:2016-04-14 14:55:42

标签: json scala lift json4s

我正在尝试使用以下案例类的json4s本地序列化/反序列化为json:

case class UserId(value: String) extends MappedTo[String] with Guid

case class FootballTeamId(value: String) extends Guid

trait Guid extends Id[String] with MappedTo[String]

object Guid {

  import scala.reflect.runtime._
  import scala.reflect.runtime.universe._

  def next[T <: Guid : TypeTag]: T = {
    val tt = typeTag[T]
    val constructor: MethodSymbol = tt.tpe.members.filter {
      m ⇒
        m.isMethod && m.asMethod.isConstructor
    }.head.asMethod
    currentMirror.reflectClass(tt.tpe.typeSymbol.asClass).reflectConstructor(constructor)(UUID.randomUUID().toString).asInstanceOf[T]
  }

}

我可以这样做:

  case object UserIdSerializer extends CustomSerializer[UserId](format => ({
    case JString(s) => {
      UserId(s)
    }
  }, {
    case s: UserId => JString(s.value)
  }))

并且按类型有一个自定义序列化程序,但我宁愿干,并且有一个自定义序列化程序可以为Guid类型的所有对象完成工作。我没有运气。如果有任何帮助,我将不胜感激!

谢谢

0 个答案:

没有答案