Я использую сборку в классе JSON в Scala 2.8 для разбора кода JSON. Я не хочу использовать Liftweb один или любой другой из-за минимизации зависимостей.Как разобрать JSON в Scala с использованием стандартных классов Scala?
То, как я это делаю, кажется слишком необходимым, есть ли лучший способ сделать это?
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]
}
Мне нравится ваш подход редактировать 2 декларирования объектов с ожидаемыми типами и с методом Исключить. Если вы опубликуете его как отдельный ответ, я его проголосую. – Steve
Извините, что выкопал старую почту, но в чем смысл первого Some (M (map)) в цикле? Я понимаю, что M (карта) извлекает карту в переменную «карта», но как насчет Some? –
@FedericoBonelli, 'JSON.parseFull' возвращает' Option [Any] ', поэтому он начинается с' List (None) 'или' List (Some (any)) '. 'Some' предназначен для сопоставления шаблонов на' Option'. – huynhjl