From af6845cc08ae223ad67ebad61559d8264fd3346b Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 13 Feb 2018 15:09:31 -0800 Subject: Initial commit --- src/main/scala/CustomFormats.scala | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/scala/CustomFormats.scala (limited to 'src/main/scala/CustomFormats.scala') diff --git a/src/main/scala/CustomFormats.scala b/src/main/scala/CustomFormats.scala new file mode 100644 index 0000000..3656e3b --- /dev/null +++ b/src/main/scala/CustomFormats.scala @@ -0,0 +1,19 @@ + +import spray.json._ + +trait CustomFormats extends DefaultJsonProtocol { + + implicit val fooFormat: JsonFormat[Foo] = new JsonFormat[Foo] { + def read(number: JsValue) = number match { + case JsNumber(x) => Foo(-x.toInt) + case tpe => sys.error(s"no way I'm reading that type $tpe!") + } + def write(number: Foo) = JsNumber(-number.x) + } + + implicit val z: JsonFormat[B] = new JsonFormat[B] { + def read(x: JsValue) = B("gone") + def write(x: B) = JsObject("a" -> JsString("A")) + } + +} -- cgit v1.2.3