首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spray json和列表编组

spray json和列表编组
EN

Stack Overflow用户
提问于 2013-07-19 05:42:20
回答 3查看 7.6K关注 0票数 10

我正在使用spray JSON将自定义对象的列表编组到JSON中。我有以下的case类和它的JsonProtocol。

代码语言:javascript
复制
case class ElementResponse(name: String, symbol: String, code: String, pkwiu: String, remarks: String, priceNetto: BigDecimal, priceBrutto: BigDecimal, vat: Int, minInStock:Int,                        maxInStock: Int)

object JollyJsonProtocol extends DefaultJsonProtocol with SprayJsonSupport  {
 implicit val elementFormat = jsonFormat10(ElementResponse)
}

当我尝试放入像这样的路径时:

代码语言:javascript
复制
get {
      complete {
        List(new ElementResponse(...), new ElementResponse(...))
      }
    }

我收到一个错误,说:

代码语言:javascript
复制
 could not find implicit value for evidence parameter of type spray.httpx.marshalling.Marshaller[List[pl.ftang.scala.polka.rest.ElementResponse]]

也许你知道问题出在哪里?

我使用的是Scala 2.10.1和Scala 1.1-M7和Scala json 1.2.5

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-19 11:06:55

您还需要导入您在路由范围上定义的格式:

代码语言:javascript
复制
import JollyJsonProtocol._
get {
      complete {
        List(new ElementResponse(...), new ElementResponse(...))
      }
    }
票数 2
EN

Stack Overflow用户

发布于 2015-06-30 22:23:24

这是一个老问题,但我想尽我最大的努力。今天也在研究类似的问题。

Marcin,看起来你的问题实际上并没有得到解决(据我所知)--为什么你接受了一个答案?

你有没有尝试在某些地方添加import spray.json.DefaultJsonProtocol._?它们负责让Seqs、Maps、Options和Tuples正常工作。我认为这可能是您的问题的原因,因为这是List没有转换的原因。

票数 5
EN

Stack Overflow用户

发布于 2013-07-19 15:40:11

要做到这一点,最简单的方法是从列表中生成一个字符串,否则您将不得不处理ChunckedMessages:

代码语言:javascript
复制
implicit def ListMarshaller[T](implicit m: Marshaller[T]) =
    Marshaller[List[T]]{ (value, ctx) =>
      value match {
        case Nil => ctx.marshalTo(EmptyEntity)
        case v => v.map(m(_, ctx)).mkString(",")
      }
    }

第二种方法是将你的列表转换成Stream[ElementResponse],然后让spray为你chunck它。

代码语言:javascript
复制
get {
  complete {
    List(new ElementResponse(...), new ElementResponse(...)).toStream
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17734457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档