aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/CustomFormats.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/CustomFormats.scala')
-rw-r--r--src/main/scala/CustomFormats.scala19
1 files changed, 19 insertions, 0 deletions
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"))
+ }
+
+}