Разбор строки Json в Scala с использованием платформы Play

Я начал пробовать Scala и Play для анализа данных Json и следовал руководству по адресу https://www.playframework.com/documentation/2.3.9/ScalaJson. Теперь, когда я пытаюсь запустить приведенный там пример кода:

val json: JsValue = Json.parse("""{
  "name" : "Watership Down",
  "location" : {
    "lat" : 51.235685,
    "long" : -1.309197
  },
  "residents" : [ {
    "name" : "Fiver",
    "age" : 4,
    "role" : null
  }, {
    "name" : "Bigwig",
    "age" : 6,
    "role" : "Owsla"
  } ]
}
""")

val lat = json \ "location" \ "lat"

Я получаю следующую ошибку:

java.lang.NoSuchMethodError: play.api.libs.json.JsValue.$bslash(Ljava/lang/String;)Lplay/api/libs/json/JsValue;

Что я делаю неправильно? Я использую Scala 2.10 и Play 2.3.9.

Благодарю.

1 ответ

В Play 2.4.x JsLookupResult представляет значение для определенного пути Json, либо фактического узла Json, либо неопределенного. JsLookupResult имеет два подкласса: JsDefined и JsUndefined соответственно.

Вы можете изменить свой код следующим образом:

val name: JsLookupResult = json \ "user" \ "name"

name match {
  case JsDefined(v) => println(s"name = ${v.toString}")
  case undefined: JsUndefined => println(undefined.validationError)
}
Другие вопросы по тегам