Как преобразовать JsArray в последовательность классов case с spray-json?

У меня есть переменная

var movieArray = movieText.parseJson

который имеет класс

println(movieArray.getClass)
class spray.json.JsArray

Как мне преобразовать его в последовательность классов дел, например

case class Movie(id: Int, title: String)

Я старался

1. movieArray.convertTo[Seq[Movie]]
2. movieArray.map(_.convertTo[Movie])
3. for (i <- movieArray) println(i)

выдает ошибки...

1. Cannot find JsonReader or JsonFormat type class for Seq[Movie]
2. value map is not a member of spray.json.JsValue
3. value foreach is not a member of spray.json.JsValue

Какие-либо предложения? Помощь приветствуется.

Правильный ответ https://github.com/spray/spray-json/issues/259

import spray.json._
import DefaultJsonProtocol._

var movieArray = movieText.stripMargin.parseJson

case class Movie(id: Int, title: String)

implicit val movieFormat = jsonFormat2(Movie)

movieArray.convertTo[Seq[Movie]]

1 ответ

Каждый элемент movieArray должен быть преобразован в объект типа Movie.

movieArray.map(_.convertTo[Movie])

Конечно, приведенное выше утверждение зависит от наличия логики для преобразования из Json в экземпляр Movie (JsonProtocol). Пожалуйста, обратитесь к следующему примеру

https://github.com/spray/spray-json

Другие вопросы по тегам