如何从Scala中的JSON密钥中获取特定值?

时间:2019-03-01 06:11:07

标签: java json scala

我想从URL "stations"的下面JSON中的键"base"返回值https://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22。如何在Scala中做到这一点?

这是我的尝试。

import scalaj.http._
import play.api.libs.json.{JsValue, Json}

object JSON {
def convertToJson(): String = {
    val url: String = "https://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22"
    val response: String = Http(url).asString.body
    val parsed: JsValue = Json.parse(response)
    parsed.get(base)
}
}

1 个答案:

答案 0 :(得分:0)

您可以使用\方法返回与字段名称相对应的属性

val result: JsLookupResult = parsed \ "base"

如果您希望将结果作为字符串,则可以使用as[String]转换

println(result.as[String])

它将打印“ station”,但如果它不是真正的String,则会抛出异常

如果缺少值,则可以使用模式匹配:

result match {
  case JsDefined(v) => println(v.toString) // will print "stations"
  case undefined: JsUndefined => println(undefined.validationError) // prints error in case missing value
}