blob: 60c7e70b697f0dd2341f716ad5589234c28938e2 (
plain) (
tree)
|
|
package xyz.driver.pdsuidomain.formats.json
import spray.json._
import xyz.driver.pdsuidomain.entities._
object studydesign {
import DefaultJsonProtocol._
import common._
implicit val studyDesignFormat: RootJsonFormat[StudyDesign] = new RootJsonFormat[StudyDesign] {
override def read(json: JsValue): StudyDesign = json match {
case JsObject(fields) =>
val name = fields
.get("name")
.map(_.convertTo[String])
.getOrElse(deserializationError(s"Study design json object does not contain `name` field: $json"))
StudyDesign
.fromString(name)
.getOrElse(deserializationError(s"Unknown study design: $name"))
case _ => deserializationError(s"Expected Json Object as Study design, but got $json")
}
override def write(obj: StudyDesign) =
JsObject("id" -> obj.id.toJson, "name" -> obj.name.toJson)
}
}
|