From a6ed777d5bb31d8cb48416e7bb5dee2658ad4282 Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Sat, 8 Nov 2014 14:17:03 +0100 Subject: [PATCH] Added mapToJson method --- .../lumc/sasc/biopet/core/config/Config.scala | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala index c35a1fdd7..219374597 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala @@ -197,4 +197,28 @@ object Config { return None } } + + def mapToJson(map: Map[String, Any]): Json = { + map.foldLeft(jEmptyObject)((acc, kv) => (kv._1 := { + kv._2 match { + case m: Map[_, _] => mapToJson(m.map(m => m._1.toString -> anyToJson(m._2))) + case _ => anyToJson(kv._2) + } + }) ->: acc) + } + + def anyToJson(any: Any): Json = { + any match { + case j: Json => j + case m: Map[_, _] => mapToJson(m.map(m => m._1.toString -> anyToJson(m._2))) + case l: List[_] => Json.array(l.map(anyToJson(_)): _*) + case n: Int => Json.jNumberOrString(n) + case n: Double => Json.jNumberOrString(n) + case n: Long => Json.jNumberOrString(n) + case n: Short => Json.jNumberOrString(n) + case n: Float => Json.jNumberOrString(n) + case n: Byte => Json.jNumberOrString(n) + case _ => jString(any.toString) + } + } } \ No newline at end of file -- GitLab