Tôi đang sử dụng xây dựng trong lớp JSON trong Scala 2.8 để phân tích cú pháp mã JSON. Tôi không muốn sử dụng Liftweb một hoặc bất kỳ khác do giảm thiểu phụ thuộc.Làm thế nào để phân tích cú pháp JSON trong Scala bằng cách sử dụng các lớp Scala tiêu chuẩn?
Cách tôi làm dường như quá cấp bách, có cách nào tốt hơn để làm điều đó không?
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]
}
Tôi thích cách tiếp cận chỉnh sửa 2 lại tuyên bố đối tượng với các loại dự kiến và một phương pháp unapply. Nếu bạn đăng nó như là một câu trả lời riêng biệt, tôi sẽ bỏ phiếu cho nó. – Steve
Xin lỗi để đào lên một bài cũ, nhưng ý nghĩa của một số đầu tiên (M (bản đồ)) trong vòng lặp là gì? Tôi hiểu rằng M (bản đồ) đang trích xuất bản đồ thành biến "bản đồ", nhưng còn về cái gì? –
@FedericoBonelli, 'JSON.parseFull' trả về' Option [Any] ', vì vậy nó bắt đầu với' List (None) 'hoặc' List (Some (any)) '. 'Một số' là để khớp mẫu trên' Tùy chọn'. – huynhjl