Sto utilizzando la build in classe JSON in Scala 2.8 per analizzare il codice JSON. Non voglio utilizzare l'uno o l'altro di Liftweb a causa della riduzione al minimo delle dipendenze.Come analizzare JSON in Scala usando le classi standard di Scala?
Il modo in cui sto facendo sembra troppo imperativo, c'è un modo migliore per farlo?
import scala.util.parsing.json._
...
val json:Option[Any] = JSON.parseFull(jsonString)
val map:Map[String,Any] = json.get.asInstanceOf[Map[String, Any]]
val languages:List[Any] = map.get("languages").get.asInstanceOf[List[Any]]
languages.foreach(langMap => {
val language:Map[String,Any] = langMap.asInstanceOf[Map[String,Any]]
val name:String = language.get("name").get.asInstanceOf[String]
val isActive:Boolean = language.get("is_active").get.asInstanceOf[Boolean]
val completeness:Double = language.get("completeness").get.asInstanceOf[Double]
}
Mi piace il suo approccio di modifica 2 di dichiarare oggetti con i tipi previsti e un metodo unapply. Se lo pubblichi come risposta separata, voterò. – Steve
Mi dispiace scovare un vecchio post, ma qual è il significato del primo Some (M (mappa)) nel loop? Capisco che la M (mappa) stia estraendo la mappa sulla variabile "mappa", ma per quanto riguarda gli Alcuni? –
@FedericoBonelli, 'JSON.parseFull' restituisce' Option [Any] ', quindi inizia con' List (None) 'o' List (Some (any)) '. Il 'Some' è per la corrispondenza del modello su' Opzione'. – huynhjl