Com*_*der 6 json scala playframework-2.0
我试图通过远程http响应解析播放框架中的一些json.我想进入结果[0] - >位置[0] - > latLng-> lat.我正在使用scala的playframework 2.0.
下面是我使用的代码,以及我迄今为止尝试过的几个注释示例.
val promise = WS.url("http://www.mapquestapi.com/geocoding/v2/address?...").get()
val body = promise.value.get.body
val json = Json.parse(body)
val maybeLat = (json \ "results" \ "0" \ "locations" \ "0" \ "latLng" \ "lat").asInstanceOf[String]
//val maybeLat = (json \ "results[0]" \ "locations[0]" \ "latLng" \ "lat").asInstanceOf[String]
//val maybeLat = (json \ "results(0) \ "locations(0) \ "latLng" \ "lat").asInstanceOf[String]
Ok(body).withHeaders(CONTENT_TYPE -> "text/json")
Run Code Online (Sandbox Code Playgroud)
我从play框架获得的错误:http://pastebin.com/S5S3nY5D JSON我正在尝试解析:http://pastebin.com/7rfD0j2n
试试这个,顺序访问必须在路径遍历之后.
val result = (json \ "results")(0)
val location = (result \ "locations")(0)
val lat = (location \ "latLng" \ "lat")
Run Code Online (Sandbox Code Playgroud)
有了这个,您可以构建您的单线解决方案:
(((json \ "results")(0) \ "locations")(0) \ "latLng" \ "lat")
Run Code Online (Sandbox Code Playgroud)
我认为更好的方法是:
val resultsArray = (json \ "results").as[JsArray]
val locations = resultsArray \\ "locations"
Run Code Online (Sandbox Code Playgroud)
此时,locations将是您可以遍历的对象列表,而无需通过索引手动访问它们.
| 归档时间: |
|
| 查看次数: |
5269 次 |
| 最近记录: |