From c7b619402f290fdf77312af5f426eb6bd0d5e5f7 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 19 May 2013 23:09:39 +0200 Subject: o Implementing my own model of collection+json. My browser want to be more relaxed than what normally makes sense. o Implementing the server side of the queries. --- src/main/scala/io/trygvis/cj/Json4sHelpers.scala | 47 ++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/scala/io/trygvis/cj/Json4sHelpers.scala (limited to 'src/main/scala/io/trygvis/cj/Json4sHelpers.scala') diff --git a/src/main/scala/io/trygvis/cj/Json4sHelpers.scala b/src/main/scala/io/trygvis/cj/Json4sHelpers.scala new file mode 100644 index 0000000..0241e59 --- /dev/null +++ b/src/main/scala/io/trygvis/cj/Json4sHelpers.scala @@ -0,0 +1,47 @@ +package io.trygvis.cj + +import org.json4s._ + +object Json4sHelpers { + def getAsObjectList(obj: JObject, name: String): List[JObject] = { + (obj \ name) match { + case JArray(values) => values.collect{case o@JObject(_) => o} + case o@JObject(_) => List(o) + case _ => Nil + } + } + + def getAsValueList(obj: JObject, name: String): List[JValue] = { + (obj \ name) match { + case JNothing => Nil + case JArray(values) => values + case j => List(j) + } + } + + def getAsObject(obj: JObject, name: String): Option[JObject] = { + (obj \ name) match { + case o@JObject(_) => Some(o) + case _ => None + } + } + + def getAsString(obj: JObject, name: String): Option[String] = { + (obj \ name) match { + case JString(s) => Some(s) + case _ => None + } + } + + def replace(obj: JObject, name: String, value: JValue): JObject = { + val map = obj.obj.toMap - name + JObject(map.updated(name, value).toList) + } + + def filtered(obj: JObject): JObject = { + JObject(obj.obj.filter { + case JField(_, JNothing) => false + case _ => true + }) + } +} -- cgit v1.2.3