Akka Http-将DateTime解析为json时出现“类型不匹配”

时间:2018-12-23 19:30:02

标签: scala akka akka-http spray

我已经创建了简单的特征,可以将模型转换为json:

trait Protocols extends SprayJsonSupport with DefaultJsonProtocol {
  implicit val travelFormat = jsonFormat4(Travel)
}

我有一个Travel模型,看起来像:

case class Travel(id: Option[Long] = None,
                  startDate: DateTime,
                  endDate: DateTime,
                  name: String,
                  description: String,
                  amount: BigDecimal)

但是问题是(据我发现)在DateTime类中。在这段代码中,我在jsonFormat4方法上遇到了编译器错误:

Type mismatch, expected: (NotInferedP1, NotInferedP2, NotInferedP3, NotInferedP4) => NotInferedT, actual: (Option[Long], DateTime, DateTime, String, String, BigDecimal) => Travel

当我删除所有DateTime字段时,效果很好。但就我而言,我需要此字段。那么我应该如何解决呢?我尝试给他们提供默认参数,但是它也没有用。

1 个答案:

答案 0 :(得分:1)

例如,您是否可以尝试编写自定义格式器:

 implicit val travelFormat: Format[Travel] =
    new Format[Travel] {
       for {
          id <- (json \ "id").validate[Int]
          startDate <- (json \ "startDate").validate[FiniteDuration]
          endDate <- (json \ "endDate").validate[FiniteDuration]
          ....
        } yield {
          Travel(
            id = id,
            startDate = startDate,
            endDate = endDate,
            ....
          )
        }
    }

在上面的示例中,我正在使用play-json库!