首页 文章

Scala JSON读/写

提问于
浏览
0

我开始玩Scala,在播放框架页面做一些例子时,我发现了一些我无法解决的问题 . 我是斯卡拉的新人,所以我请原谅 .

为什么这个编译没有错误:

case class Location(lat: Double, long: Double)

implicit val locationReads: Reads[Location] = (
    (JsPath \ "lat").read[Double] and
        (JsPath \ "long").read[Double]
    )(Location.apply _)

但是这个不会编译:

case class Location(lat: Double)

implicit val locationReads: Reads[Location] = (
    (JsPath \ "lat").read[Double]
    )(Location.apply _)

并显示错误:

重载方法值读取与替代:[error](t:Double)play.api.libs.json.Reads [Double] [error](隐式r:play.api.libs.json.Reads [Double])播放 . api.libs.json.Reads [Double] [error]无法应用于(Double => biz.JsonProtocol.Location)[error](JsPath \“lat”) . read [Double]

2 回答

  • 4

    事实证明,在播放版本<= 2.1(已将其标记为solved)中使用JSON组合器与单字段案例类时存在一些限制 . 有关可能的解决方案,请参阅this问题 .

  • 1

    看起来你不能拥有只有纬度的biz.JsonProtocol.Location ...这就是为什么你的示例与lat和long工作但只是lat将无法编译

相关问题