본문 바로가기

Development/Web & Server

[Play Framework2] Json polymorphism

Scala에서는 동적으로 Json 으로 변환하기가 힘들다. 그래서 찾은 방법이 trait을 만들어서 상속을 통한 방법이다.


trait Person


object Person {

 implicit val shapeWrites = Writes[Person] { person => person match {

 case student: Student => Json.writes[Student].writes(student)

 case teacher: Teacher => Json.writes[Teacher].writes(teacher)

 case parent: Parent => Json.writes[Parent].writes(parent)

}}

}


@Entity

@Table (name = "teacher")

case class Teacher (

  @(Id @field)@(GeneratedValue @field)@(Column @field)(name = "no") var no :Long,

  @(ManyToOne @field)@(JoinColumn @field)(name = "class_no") var schoolClass : Class,

  @(Column @field)(name = "name") var name : String

) extends Person {

  def this() = this(0, null, null)

}


object Teacher {

  implicit var teacherWrites = Json.writes[Teacher]

  implicit var teacherReads = Json.reads[Teacher]

}



'Development > Web & Server' 카테고리의 다른 글

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!  (0) 2015.07.22
typesafe activator 삭제하기  (0) 2015.07.18
[Play Framework2] JPA & Json model  (0) 2015.06.11
[Play Framework2] Json  (0) 2015.06.01
[Play Framework2] JPA  (0) 2015.06.01