2010-10-26 7 views
3

Je voudrais parcourir une collection résultant de la boîte à outils Scala JSON à github. Le problème est que le JsonParser renvoie "Tout" alors je me demande comment je peux éviter l'erreur suivante:traverse collection de type "Any" dans Scala

"Valeur foreach n'est membre d'aucun".

val json = Json.parse(urls) 

for(l <- json) {...} 

object Json { 
    def parse(s: String): Any = (new JsonParser).parse(s) 
} 
+0

Quelle boîte à outils JSON? S'il vous plaît ajouter un lien. – mkneissl

+2

La question mentionne déjà la boîte à outils "Scala JSON", qui serait celle-ci: http://github.com/stevej/scala-json –

Répondre

6

Vous devrez effectuer une correspondance de modèle pour parcourir les structures renvoyées par l'analyseur.

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

Si vous êtes sûr que dans tous les cas il n'y aura qu'un seul type que vous pouvez venir avec les acteurs suivants:

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

faire autrement un motif-Match pour tous les cas attendus.

+0

Cette réponse ne dit pas non plus pourquoi cela fonctionne et ne semble pas être une solution générale le problème. – ziggystar

Questions connexes