scala - 搜索 json 键并返回空列表,如果其值为空字符串
问题描述
此代码不能很好地处理空字符串值:
val getPerson = (json \ "ID").asOpt[String].map(id => List(Person(name, id, birthday))).getOrElse(List.empty)
问题是 ID 可以是空字符串,Person 的构造函数允许 id 为空(按设计),但我不希望 Person 在这个阶段没有 ID。
我试过了:
val getPerson = (json \ "ID").asOpt[String].map(id => if (id.nonEmpty) List(Person(name, id, birthday))).getOrElse(List.empty)
但是返回类型Any
是List[Person]
我的目标是在空id
返回 List.empty的情况下
解决方案
除了@pme 答案之外,您应该使用List.empty[Type]
(Whether String
or Person
) 而不是List.empty
的原因是因为 List.empty
实际上是 type List[Nothing]
。
因为您List[Person]
在一种情况下返回,而List[Nothing]
在另一种情况下,您的返回类型为Any
.
无论如何,当您处理空集合(Seq、List、..)时,您应该始终更喜欢List/Seq.empty[Type]
,因为它更清楚地表达了您的意图,并且不需要实例化(空)重复参数参数列表。
推荐阅读
- ubuntu - 在 minikube 中运行 jenkins 时出错
- java - IBM CDC for MySQL 未启动
- python - 如何根据另一个列表对列表进行分组,其中每个元素都是值列表?
- mongodb - 引用特定的子节点 mongodb
- python - 使用 netconvert 在 SUMO 中进行模拟
- python - AttributeError:'int'对象在熊猫中没有属性'plot'
- r - 在R中为多个数据帧运行for循环?
- apache-kafka - Kafka - 自动提交
- javascript - 将响应值存储到全局对象中。成功但没有成功
- reactjs - 从数据库中检索信息后,信息未显示在屏幕上