【发布时间】:2018-10-05 15:26:32
【问题描述】:
我有以下带有密封特征和案例对象的 scala 代码。
sealed trait StudentType {
val studentLevel: String
val code: Int
}
case object UnderGradFull extends StudentType {
val studentLevel = "UGF"
val code = 11
}
case object UnderGradPart extends StudentType {
val studentLevel = "UGP"
val code = 12
}
case object Grad extends StudentType {
val studentLevel = "GR"
val code = 22
}
case object OtherStudentType extends StudentType {
val studentLevel = "OST"
val code = 20
}
以及使用StudentType的案例类对象
case class StudentInfo(studentName: String, studentType: StudentType)
object StudentInfo {
implicit val reads: Reads[StudentInfo] = (
(JsPath \ "studentName").read[String] and
(JsPath \ "studentType").read[StudentType]
)(StudentInfo.apply _)
implicit val writes: Writes[StudentInfo] = (
(JsPath \ "studentName").write[String] and
(JsPath \ "studentType").write[StudentType]
)(unlift(StudentInfo.unapply))
}
如何为StudentType trait 创建implicit reads/writes?
【问题讨论】:
-
自动读/写宏支持格式良好的密封特征/族。
标签: json scala playframework play-json