Cá nhân tôi thích lift-json
, nhưng nó khá dễ dàng để làm điều này với Play's JSON library:
import play.api.libs.json._
import scala.io.Source
case class Trend(name: String, url: String)
implicit object TrendReads extends Reads[Trend] {
def reads(json: JsValue) = Trend(
(json \ "name").as[String],
(json \ "url").as[String]
)
}
val url = new java.net.URL("https://api.twitter.com/1/trends/1.json")
val content = Source.fromInputStream(url.openStream).getLines.mkString("\n")
val trends = Json.parse(content) match {
case JsArray(Seq(t)) => Some((t \ "trends").as[Seq[Trend]])
case _ => None
}
Ngay bây giờ này tạo ra như sau:
scala> trends.foreach(_.foreach(println))
Trend(#TrueFactsAboutMe,http://twitter.com/search/?q=%23TrueFactsAboutMe)
Trend(#200mFinal,http://twitter.com/search/?q=%23200mFinal)
Trend(Jamaica 1,2,3,http://twitter.com/search/?q=%22Jamaica%201,2,3%22)
Trend(#DontComeToMyHouse,http://twitter.com/search/?q=%23DontComeToMyHouse)
Trend(Lauren Cheney,http://twitter.com/search/?q=%22Lauren%20Cheney%22)
Trend(Silver & Bronze,http://twitter.com/search/?q=%22Silver%20&%20Bronze%22)
Trend(Jammer Martina,http://twitter.com/search/?q=%22Jammer%20Martina%22)
Trend(Japan 2-0,http://twitter.com/search/?q=%22Japan%202-0%22)
Trend(Prata e Bronze,http://twitter.com/search/?q=%22Prata%20e%20Bronze%22)
Trend(Final 200m,http://twitter.com/search/?q=%22Final%20200m%22)
Vì vậy, vâng, có vẻ đúng.
Nguồn
2012-08-09 20:06:34
thể trùng lặp của [Làm thế nào tôi có thể xây dựng và phân tích một chuỗi JSON trong Scala/Lift] (http://stackoverflow.com/questions/927983/Làm thế nào-có thể-i-xây dựng-và-parse-a-json-string-in-scala-lift) –
đó cũng là Jerkson và một số người khác ít được biết đến thư viện –
@ om-nom-nom: Tôi không nghĩ rằng điều này được tính là một bản sao — câu hỏi khác là đặc biệt về Nâng, chứ không phải Play (và khá cổ xưa, dù sao). –