0

我有:

sealed trait MessageType { def description: String }
object MessageType {
  case object Important extends MessageType { override val description = "important" }
  case object Normal extends MessageType { override val description = "normal" }
}

trait Message { def messageType: MessageType }

case class SomeMessage(from: String, to: String, text: String) extends Message {
  override val messageType: MessageType = MessageType.Important
}

object SomeMessage {
  implicit val someMessageWrites: Writes[SomeMessage] = (
    (JsPath \ "from").write[String] and
    (JsPath \ "to").write[String] and
    (JsPath \ "text").write[String]
  )(unlift(SomeMessage.unapply))
}

然后使用Json.toJason(someMessage)将生成带有 、 和 字段的 Json fromtotext我也希望有messageType一个值为“重要”的字段。

我可以将消息类型字段作为构造函数参数包含在内,但这似乎是一种 hack - 消息类型字段应该是固定的,而不是指定的。

有可能实现这一目标吗?

4

0 回答 0