Scala编译时错误:找不到参数证据$ 2的隐式函数:BodyWritable [Map [String,Object]] [英] Scala compile time error: No implicits found for parameter evidence$2: BodyWritable[Map[String, Object]]

查看:65
本文介绍了Scala编译时错误:找不到参数证据$ 2的隐式函数:BodyWritable [Map [String,Object]]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究scala play框架应用程序.我正在尝试调用一个Web服务API,该API接收请求有效载荷数据如下

I am working on scala play framework application. I am trying to call a web service API which takes request payload data as follows

{
    "toID": [
        "email1@email.com",
        "email2@email.com"
    ],
    "fromID": "info@test.com",
    "userID": "ervd12fdsfksdjnfn9832rbjfdsnf",
    "mailContent": "Dear Sir, ..."
}

为此,我正在使用以下代码

And for this I am using following code

ws.url(Utils.messengerServiceUrl + "service/email")
          .post(
            Map("userID" -> userID, "mailContent" -> userData.message, "fromID" -> "info@test.com", "toID" -> userData.emails)).map { response =>
          println(response.body, response.status)
        }

因此对于此代码,编译器抱怨"toID"-> userData.emails 未发现参数证据$ 2的隐式信息:BodyWritable [Map [String,Object]]

So for this code, compiler is complaining about "toID" -> userData.emails saying No implicits found for parameter evidence$2: BodyWritable[Map[String, Object]]

所以我的问题是如何使用WSClient发送此类数据?

So my question is how to send such data using WSClient?

推荐答案

您可以使用类似的案例类来实现

You can do it with case class like that

import play.api.libs.json._


case class Message(toID: Seq[String], fromID: String, userID: String, mailContent: String)

object Message {
  implicit val writes: Writes[Message] = Json.writes[Message]
}

请注意带有隐式写入

这篇关于Scala编译时错误:找不到参数证据$ 2的隐式函数:BodyWritable [Map [String,Object]]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆