您可以使用scala JSON解析器獲取json的關鍵字,如下所示。我定義了一個函數來獲取經緯度,您可以根據需要對其進行通用化處理,以便您只需更改函數即可。
import scala.util.parsing.json.JSON
val json =
"""
|{
| "name" : "Watership Down",
| "location" : {
| "lat" : 51.235685,
| "long" : -1.309197
| },
| "residents" : [ {
| "name" : "Fiver",
| "age" : 4,
| "role" : null
| }, {
| "name" : "Bigwig",
| "age" : 6,
| "role" : "Owsla"
| } ]
|}
""".stripMargin
val jsonObject = JSON.parseFull(json).get.asInstanceOf[Map[String, Any]]
val latLambda : (Map[String, Any] => Option[Double]) = _.get("location")
.map(_.asInstanceOf[Map[String, Any]]("lat").toString.toDouble)
assert(latLambda(jsonObject) == Some(51.235685))
的功能擴展版本,
val latitudeLambda = new Function[Map[String, Any], Double]{
override def apply(input: Map[String, Any]): Double = {
input("location").asInstanceOf[Map[String, Any]]("lat").toString.toDouble
}
}
使函數通用的,所以,一旦你知道你從JSON想要什麼鍵,只是改變了功能和應用的JSON。
希望它有幫助。但是有更好的APIs,比如Play JSON lib。你根本無法使用,
import play.api.libs.json._
val jsonVal = Json.parse(json)
val lat = (jsonVal \ "location" \ "lat").get
我以前玩庫,但它並不滿足,因爲我說我寫廣義的程序,從JSON獲得價值爲目的,所以我不知道什麼JSON路徑的使用是要的提供,我正在尋找的東西,其中用戶提供商的JSON路徑,我可以提取價值使用 –
你能給我一個格式什麼你的傳入鍵看起來像? – prayagupd