Если вы можете гарантировать, что он вернет действительный JSON, вам лучше использовать библиотеку синтаксического анализа JSON, чем регулярное выражение. Например, вот один из способов прочитать JSON с помощью Play JSON:
import play.api.libs.json._
val url = "http://api.hostip.info/get_json.php?ip=12.215.42.19"
val result = scala.io.Source.fromURL(url).mkString
val json = Json.parse(result)
Вот Scast ie, пример (примечание: это небезопасно, поскольку в нем используется .get
вместо .getOrElse
)
Еще лучше, на этом этапе вы можете использовать Play JSON для хранения всех полей внутри класса для облегчения доступа, например:
import play.api.libs.json._
case class MyClass(myField: String, myField2: Int)
object MyClass {
// out of the box conversion between JSON and model
implicit val format: OFormat[MyClass] = Json.format[MyClass]
}
val result = """{"myField": "beans", "myField2": 123}"""
val model = Json.parse(result).as[MyClass] // .asOpt is safer, puts class inside Option
model.myField // beans
model.myField2 // 123
Scast ie для этого тоже
Обратите внимание, что для использования Play JSON вам нужно либо находиться внутри проекта Play, либо включить следующую зависимость в свой build.sbt:
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-json" % "2.9.0"
)