Как получить конкретное значение из ключа в JSON в Scala? - PullRequest
0 голосов
/ 01 марта 2019

Я хочу вернуть значение "stations" с помощью ключа "base" в JSON ниже от URL 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 голосов
/ 01 марта 2019

Вы можете использовать \ метод, возвращающий свойство, соответствующее имени поля

val result: JsLookupResult = parsed \ "base"

Если вы хотите получить результат в виде строки, вы можете использовать as[String] преобразование

println(result.as[String])

Он выведет «станцию», но может выдать исключение, если на самом деле это не String

В случае, если значение отсутствует, вы можете использовать сопоставление с шаблоном:

result match {
  case JsDefined(v) => println(v.toString) // will print "stations"
  case undefined: JsUndefined => println(undefined.validationError) // prints error in case missing value
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...