2010-10-26 30 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