scala - Akka Http - 将 DateTime 解析为 json 时出现“类型不匹配”
问题描述
我创建了应该将模型转换为 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
字段时,它运行良好。但就我而言,我需要这些字段。那我该怎么修呢?我尝试给他们一个默认参数,但它也不起作用。
解决方案
您可以尝试编写这样的自定义格式化程序,例如:
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 库!
推荐阅读
- ios - 自 iOS 13 起,MKPolyline 替换导致 MKTileOverlay 在地图上闪烁
- java - Spring 无法反序列化请求参数日期“Thu Dec 26 20:53:18 GMT+01:00 2019”
- multipartform-data - npm nock:模拟发布多部分形式的上传文件
- node.js - 'npm start' 与 create-react-app 未在 macOS 上启动服务器
- sql - 在选择子句的另一个案例中使用案例列
- python - 给定两个函数,找到一个阈值,使得一个总是大于另一个
- java - 如何在 Apache Poi(Excel 文件)中设置自动换行
- java - 从java中的方法返回值时出错
- c# - 为什么此 PDF 文件中的图像在某些查看器中损坏?
- sql - 是否可以使用 sas/sql 在第一个位置插入列