我有:
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 from
,to
但text
我也希望有messageType
一个值为“重要”的字段。
我可以将消息类型字段作为构造函数参数包含在内,但这似乎是一种 hack - 消息类型字段应该是固定的,而不是指定的。
有可能实现这一目标吗?