Как я могу преобразовать JsValue в массив [Int] в Scala? - PullRequest
0 голосов
/ 03 февраля 2020

Я использую библиотеку Play Json для анализа json в scala, и у меня есть значение, похожее на это

scala> val extract = (payload \ "id")
extract: play.api.libs.json.JsValue = [8,18]

Я хочу преобразовать JsValue в Array [Int].

1 Ответ

2 голосов
/ 03 февраля 2020

Ну, потому что вы работаете с парсингом json - что подразумевает, что наряду с тем, что вам нужно проверять его и правильно обрабатывать ошибки, это не так просто просто конвертировать - игра JSON заставит вас обрабатывать ошибки , Таким образом, отвечая на ваш вопрос, вы можете попробовать что-то вроде описанного ниже:

   val jsonString = "{\"id\": [1, 2, 3] }"
    val payload = Json.parse(jsonString)
    // This will return `JsResult` - success or failure, which need to be properly handled
    println((payload \ "id").validate[Array[Int]].map(_.toList))

    // This is unsafe operation and might throw exception for un-expected JSON
    println((payload \ "id").validate[Array[Int]].get.toList)

, который распечатывается для меня следующим образом:

JsSuccess(List(1, 2, 3),)
List(1, 2, 3)

Я добавил toList только для удобства чтения. Надеюсь, это поможет вам!

...