如何使用Spray-json将JsArray转换为案例类序列? [英] How to convert a JsArray to sequence of case classes with spray-json?

查看:188
本文介绍了如何使用Spray-json将JsArray转换为案例类序列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个变量

var movieArray = movieText.parseJson

属于此类

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

如何将其转换为一系列案例类,例如

How do I convert it to a Sequence of case classes e.g

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

有什么建议吗?帮助表示赞赏.

Any suggestions? Help appreciated.

正确答案 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]]

推荐答案

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

Each element of movieArray will have to be converted to an object of type Movie.

movieArray.map(_.convertTo[Movie])

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

Of course, the above statement depends on availability of logic to convert from Json to instance of Movie (JsonProtocol). Please refer the following for example

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

这篇关于如何使用Spray-json将JsArray转换为案例类序列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆