Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Play框架中进入JSON数组_Json_Scala_Playframework 2.0 - Fatal编程技术网

在Play框架中进入JSON数组

在Play框架中进入JSON数组,json,scala,playframework-2.0,Json,Scala,Playframework 2.0,我试图从远程http响应解析play框架中的一些json。我正在尝试进入结果[0]->locations[0]->latLng->lat。我正在使用playframework 2.0和scala 下面是我正在使用的代码,其中包含一些我迄今为止尝试过的注释示例 val promise = WS.url("http://www.mapquestapi.com/geocoding/v2/address?...").get() val body = promise.value.get.body

我试图从远程http响应解析play框架中的一些json。我正在尝试进入结果[0]->locations[0]->latLng->lat。我正在使用playframework 2.0和scala

下面是我正在使用的代码,其中包含一些我迄今为止尝试过的注释示例

  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")
我从play framework获得的错误:
我试图解析的JSON:

试试这个,顺序访问必须在路径遍历之后

val result = (json \ "results")(0)
val location = (result \ "locations")(0)
val lat = (location \ "latLng" \ "lat")
使用此功能,您可以构建单线解决方案:

(((json \ "results")(0) \ "locations")(0) \ "latLng" \ "lat")

我认为更好的方法是:

val resultsArray = (json \ "results").as[JsArray]
val locations = resultsArray \\ "locations"

此时,
locations
将是一个对象列表,您可以遍历这些对象,而不必通过它们的索引手动访问它们。

这实际上是一种非常烦人的方法-还有其他方法吗?如果我不知道数组中的位置怎么办?