我想遍历从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