【问题标题】:Required fields in scala mapscala map 中的必填字段
【发布时间】:2016-09-08 00:09:55
【问题描述】:

我有一个 jsonMAP : MAP[String , Any] 我正在从地图中提取三个必填字段

 //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 没有必填值,则会引发异常。在 scala 中是否有更好的方法来实现必填字段提取?

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

【问题讨论】:

  • 这取决于预期的行为。你想抛出,但例如缩短代码,或者你想获得一个选项或其他东西?
  • 我在预期部分编辑了详细信息。

标签: scala


【解决方案1】:

将映射提升到部分函数,​​其中缺少的键映射到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")

【讨论】:

    猜你喜欢
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多