2016-09-07 4 views
0

Ich habe einen jsonMAP: MAP [String, Alles] und ich bin Extrahieren drei Pflichtfelder aus KarteErforderliche Felder in scala Karte

//case class for exception handling 
case class ParserException(message: String) extends Exception(message) 

val Id = jsonMap.getOrElse("Id", throw ParserException("ID is required.")) 
val Type = jsonMap.getOrElse("Type", throw ParserException("Type is required.")) 
val Location = jsonMap.getOrElse("Location", throw ParserException("Location is required.")) 

Wenn Json nicht Wert Ausnahme raised.Is da sein wird, erforderlich sind Gibt es einen besseren Weg, den erforderlichen Feldextrakt zu implementieren?

Erwartet: Wenn ein Feld in JSON fehlt, sollte der Code die Ausnahme auslösen. Wenn alle Pflichtfelder verfügbar sind, sollte der Programmablauf zum nächsten Schritt übergehen.

+0

hängt davon ab, was das erwartete Verhalten ist. Möchtest du werfen, aber es zum Beispiel kürzer im Code machen oder willst du eine Option oder etwas? –

+0

Ich habe die Details im Bereich "Expected" bearbeitet. – user2895589

Antwort

0

Heben Sie die Karte zu einer Teilfunktion auf, in der fehlende Schlüssel None zugeordnet sind und Schlüssel zu Some(value) definiert sind; zum Beispiel

scala> val m = Map("id" -> 1, "loc" -> 2) 
m: scala.collection.immutable.Map[String,Int] = Map(id -> 1, loc -> 2) 

scala> m.lift("id") 
res0: Option[Int] = Some(1) 

scala> m.lift("missing") 
res1: Option[Int] = None 

Hinweis Aufzug einmal, nämlich. val mL = m.lift, viele abfragen, z.B. mL("id")