如何使用spray-json将JsArray转换为case类的序列?

时间:2018-05-13 18:57:55

标签: scala 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 个答案:

答案 0 :(得分:0)

movieArray的每个元素都必须转换为Movie类型的对象。

movieArray.map(_.convertTo[Movie])

当然,上面的语句取决于从Json转换为Movie实例(JsonProtocol)的逻辑可用性。请参考以下示例

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