diff options
author | Stewart Stewart <stewinsalot@gmail.com> | 2016-12-19 16:25:10 -0500 |
---|---|---|
committer | Stewart Stewart <stewinsalot@gmail.com> | 2016-12-19 16:25:10 -0500 |
commit | 2f6a2d763732285dc1cffb0d3a435a9e9c96cbd2 (patch) | |
tree | be8846d2b0618cc26d5eebabb46f274f7d232b8c /src/main/scala/xyz/driver/core/json.scala | |
parent | 53d04d4255489bd5802dc91d9dbebddd206d630b (diff) | |
download | driver-core-2f6a2d763732285dc1cffb0d3a435a9e9c96cbd2.tar.gz driver-core-2f6a2d763732285dc1cffb0d3a435a9e9c96cbd2.tar.bz2 driver-core-2f6a2d763732285dc1cffb0d3a435a9e9c96cbd2.zip |
serialize date to json as object with three fields
Diffstat (limited to 'src/main/scala/xyz/driver/core/json.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/json.scala | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/src/main/scala/xyz/driver/core/json.scala b/src/main/scala/xyz/driver/core/json.scala index ecd7cce..fee7341 100644 --- a/src/main/scala/xyz/driver/core/json.scala +++ b/src/main/scala/xyz/driver/core/json.scala @@ -7,7 +7,7 @@ import akka.http.scaladsl.unmarshalling.Unmarshaller import spray.json.{DeserializationException, JsNumber, _} import xyz.driver.core.revision.Revision import xyz.driver.core.time.Time -import xyz.driver.core.date.Date +import xyz.driver.core.date.Month import scala.reflect.runtime.universe._ @@ -67,19 +67,11 @@ object json { } } - implicit val dateFormat = new RootJsonFormat[Date] { - def write(date: Date) = JsObject("calendarDate" -> JsString(date.iso8601)) - - def read(value: JsValue): Date = value match { - case JsObject(fields) => - fields - .get("calendarDate") - .flatMap { - case JsString(iso) => Date.parseIso(iso) - case _ => None - } - .getOrElse(throw DeserializationException("Date expects YYYY-MM-DD")) - case _ => throw DeserializationException("Date expects YYYY-MM-DD") + implicit val dateFormat = new RootJsonFormat[Month] { + def write(month: Month) = JsNumber(month) + def read(value: JsValue): Month = value match { + case JsNumber(month) if 0 <= month && month <= 11 => date.tagMonth(month.toInt) + case _ => throw DeserializationException("Month is a 0-based number") } } |