我在Scala中处理JSON字符串中可能的null
值以及None
操作的unzip
值时遇到了几个问题。
我在JSON字符串中有字段,可以有值或null
。我需要在Scala代码中处理这两个代码,所以我正在编写简单的if(null)
检查。在Scala中有没有有效的方法?
def collectSecondId(value: SomeJsonObject) = {
if(value.someField == null) {
None
} else {
Some(value.someField.id)
}
其次这些值将包含在一些元组列表中。如果我按上述方式返回,则可以None
。如果返回None
不是一个好主意,有没有办法返回None
以外的其他方式。
有什么建议吗?
答案 0 :(得分:0)
您可以使用Try
重写您的方法:
def collectSecondId(value: SomeJsonObject) =
Try(value.someField.id).toOption
如果value.someField
为空,则您的尝试将导致失败,然后将显示为无。
答案 1 :(得分:0)
for {
optValue <- Option(value) // Evaluates to None if value is null
someField <- Option(optValue.somefield) // Evaluates to None if somefield is null
id <- Option(someField.id) // Evaluates to None if id is null
} yield value
如果任何值为null,则将导致None;如果它们全部定义,则将导致Some(id)。虽然 - 而不是手动执行此操作,但最好还是使用像Argonaut这样的JSON解析库。