2016-06-06 3 views
0

Ich habe eine Liste von Dokumenten mit Daten in Form von Map[String, Any], so dass es zu einem JSON-Objekt mit Feldern und Werten hinzugefügt werden kann. Also mein Code wie folgt aussieht etwas beim Parsen:Hinzufügen aller Felder von einem Map-Wert zu Json in Scala

val JsonDoc = Json.obj(
     "ORFID" -> doc("ORFID").toString, 
     "ORF_len" -> doc("ORF_len").toString, 
     "start" -> doc("start").toString, 
     "end" -> doc("end").toString 
...// more fields 
) 

Jedoch können einige Dokumente eines der Felder fehlen, so brauche ich einen dynamischeren Ansatz in Abhängigkeit von einzelnen Dokumenten Feldern, sonst wird eine Ausnahme ausgelöst. Was wäre der beste Ansatz dafür?

+0

Mit 'Any' als Werttyp des' Map' ist nicht eine sehr gute Idee – cchantep

Antwort

2

Sie könnten stattdessen JsObject versuchen. Sein Konstruktor benötigt ein Seq von Tupeln, die Sie von Ihrer Karte mit der Methode toSeq erhalten können, vorausgesetzt, Sie möchten die gleichen Schlüssel in Ihrem JSON wie in der Karte verwenden.

val jsonDoc = new JsonObj(doc.toSeq) 
+0

leider, es ist eine Karte (String, Any) und die erforderliche Eingabe ist (String, JsValue), I zurückgegriffen Verwenden Sie getOrElse für die Felder, die möglicherweise leer sein können, um den Fehler zu vermeiden –

Verwandte Themen