2010-10-26 41 views
3

我想遍歷從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) 
} 
+0

哪個JSON工具包?請添加一個鏈接。 – mkneissl 2010-10-26 15:16:11

+2

這個問題已經說明了「Scala JSON」工具包,它可能是這個:http://github.com/stevej/scala-json – 2010-10-26 15:46:15

回答

6

您將不得不執行模式匹配來遍歷解析器返回的結構。

/* 
* (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) 
0

如果你相信,在任何情況下都只會有一種你能想出以下投:

for (l <- json.asInstanceOf[List[List[String]]]) {...} 

否則做模式匹配的所有預期的情況下。

+0

這個答案也不能解釋它爲什麼起作用,也不是一個通用的解決方案問題。 – ziggystar 2010-10-26 15:39:23