scala - 从 List 的 Option[Any] 中获取元素
问题描述
scala> val a = jsonMap.get("L2_ID")
a: Option[Any] = Some(List(24493, 22774, 23609, 20517, 22829, 23646, 22779, 23578, 22765, 23657))
我想获取列表的第一个元素,即 24493。所以,尝试下面的代码:
scala> var b = a.map(_.toString)
b: Option[String] = Some(List(24493, 22774, 23609, 20517, 22829, 23646, 22779, 23578, 22765, 23657))
scala>
scala> var c = b.map(_.split(",")).toList.flatten
c: List[String] = List(List(24493, " 22774", " 23609", " 20517", " 22829", " 23646", " 22779", " 23578", " 22765", " 23657)")
scala> c(0)
res34: String = List(24493
这没有按预期返回。请建议。
解决方案
我建议你使用模式匹配。为了防御,我还添加了一个Try
以防止您的 json 不是数字列表的情况。下面的代码返回一个Option[Int]
,你可以调用.getOrElse(0)
它——或者其他一些默认值,如果你喜欢的话。
import scala.util.Try
val first = a match {
case Some(h :: _) => Try(h.toString.toInt).toOption
case _ => None
}
推荐阅读
- jpa - 春季启动中的 EmbbedId null
- python - Python tkinter 中的新输入字段
- python - 如何在生成器函数的定义中使用“分隔符”运行“pandas.read_csv”?
- python - 如何隐藏
用 scapy3k 嗅探时? - algorithm - O(K + (NK)logK) 是否等同于 O(K + N log K)?
- amazon-web-services - 传递给 Lambda 的 URL 中的 AWS Api Gateway 原始类型
- ios - UITableView 的第一个按钮作为搜索以及添加文本字段
- php - 我不知道如何解决这个小错误
- html - 为什么 CSS 兄弟 (~) 选择器不适用于 :checked?
- dart - 如何在 Flutter 中使用 BottomNavigationBar 构建页面