0

由于使用 scala json 解析,我得到以下结果。

import scala.util.parsing.json.JSON._
val j: String = """["this",["a","b",["c","d"]]]"""
val parse_test=parseFull(j)

现在从这里我得到 Option[Any] 的结果

我可以get用来获取结果(在这种情况下我不关心无效的 json 格式,所以这应该是安全的,对吧?)

parse_test.get
res26: Any = List(this, List(a, b, List(c, d)))

现在,我应该如何从这个AnyList我所期望的?我想我应该使用模式匹配,但我想不通。任何帮助将非常感激

4

2 回答 2

0

您可以做的是带有模式匹配和强制转换的折叠:

test_result.fold[List[String]](Nil){
  case _ :: list :: _ => list.asInstanceOf[List[String]]
  case _ => Nil
}

假设您试图丢弃第一个元素,而第二个元素是您想要的列表。

编辑:

请注意,如果第二个元素不是列表,则此强制转换会导致异常。处理 List[Any] 并试图解码其中的内容真的很可怕......

于 2013-04-08T04:19:05.610 回答
0

这是我的解决方案:

scala> val Some(xs @ List(_*)) = parse_test
xs: List[Any] = List(this, List(a, b, List(c, d)))
于 2013-04-08T08:02:29.313 回答