Как преобразовать JsArray в последовательность классов case с spray-json? - PullRequest
0 голосов
/ 13 мая 2018

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

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 Ответ

0 голосов
/ 14 мая 2018

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

movieArray.map(_.convertTo[Movie])

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

https://github.com/spray/spray-json#providing-jsonformats-for-case-classes

...