您可以使用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