2016-09-07 108 views
0

我有一个jsonMAP:MAP [字符串,任何]和我从地图必填项

//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.")) 

如果Json的不具有所需的值异常将是raised.Is提取有三个必需的领域scala中的任何更好的方法来实现必需的字段提取?

预期:如果JSON中缺少某些字段,则代码应该抛出异常。如果所有必填字段都可用,则程序流应移至下一步。

+0

它取决于预期的行为。你想抛出,但例如在代码中使它更短,或者你想获得一个选项或什么? –

+0

我在预期部分编辑了详细信息。 – user2895589

回答

0

将地图提升为部分功能,其中缺失的键映射到None并将定义的键映射到Some(value);例如,

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 

注意电梯一次,即val mL = m.lift,查询很多,例如mL("id")