1 回答
TA贡献1794条经验 获得超8个赞
这里的问题是Map你要传递给post. 除一项外,所有项均为(String, String),但最后一项为(String, Option[String])。
编译器现在必须弄清楚该集合的类型可能是什么,并沿着类型层次结构向上移动。它能找出的最佳类型是Map[String, Serializable]. 因为这是最窄的超类型 String 和 Option 实现。
这是帖子的定义:
def post[T: BodyWritable](body: T): Future[Response]
您可以看到 T 上存在类型约束,这意味着您需要一个隐式转换器*来用于传递到 post to 的主体BodyWritable。您可以在DefaultBodyWritables中找到隐式 BodyWritables 。并且没有BodyWritable[Map[String, Serializable]]。但有一个是为了Map[String, String]
你必须选择:
更改 Map,使其具有 的类型,可以通过为via
Map[String, String]提供默认值,或者如果地址为 None,则不向地图添加地址。addressgetOrElse为 Map[String, Serialized] 编写一个 BodyWritable。(这可能无法以令人满意的方式实现)
我建议你选择#1。
* 如果这不是此类隐式的正确术语,请纠正我。
添加回答
举报
