我想遍歷從github上的Scala JSON工具包生成的集合。 問題是,JsonParser返回「任何」,所以我想知道如何我可以避免以下錯誤:在Scala中遍歷類型爲「Any」的集合
「值foreach不是任何成員」。
val json = Json.parse(urls)
for(l <- json) {...}
object Json {
def parse(s: String): Any = (new JsonParser).parse(s)
}
我想遍歷從github上的Scala JSON工具包生成的集合。 問題是,JsonParser返回「任何」,所以我想知道如何我可以避免以下錯誤:在Scala中遍歷類型爲「Any」的集合
「值foreach不是任何成員」。
val json = Json.parse(urls)
for(l <- json) {...}
object Json {
def parse(s: String): Any = (new JsonParser).parse(s)
}
您將不得不執行模式匹配來遍歷解析器返回的結構。
/*
* (untested)
*/
def printThem(a: Any) {
a match {
case l:List[_] =>
println("List:")
l foreach printThem
case m:Map[_, _] =>
for ((k,v) <- m) {
print("%s -> " format k)
printThem(v)
}
case x =>
println(x)
}
val json = Json.parse(urls)
printThem(json)
如果你相信,在任何情況下都只會有一種你能想出以下投:
for (l <- json.asInstanceOf[List[List[String]]]) {...}
否則做模式匹配的所有預期的情況下。
這個答案也不能解釋它爲什麼起作用,也不是一個通用的解決方案問題。 – ziggystar 2010-10-26 15:39:23
您可能必須使用電梯,JSON解析器,可在更多的運氣:http://github.com/lift/lift/tree/master/framework/lift-base/lift-json/
它有一個更豐富的類型安全的DSL可用,(儘管名稱)可用於電梯的完全獨立的外框架。
哪個JSON工具包?請添加一個鏈接。 – mkneissl 2010-10-26 15:16:11
這個問題已經說明了「Scala JSON」工具包,它可能是這個:http://github.com/stevej/scala-json – 2010-10-26 15:46:15