如何使用Scala Play2.6从数据库中选择单列

时间:2018-08-30 08:12:18

标签: scala playframework slick

我有一个表用户详细信息表,它包含在下面的列中

用户名,用户名,电子邮件

我要选择用户ID为1的电子邮件 而且我希望响应采用正确的JSON格式

如何使用Slick在Scala Play 2.6中做到这一点
到目前为止,我已经完成了

 def getPasswqord(username:String):Future[Seq[(String)]]= {
    val a2 = (sql"""select a.userpassword from user_details_table  a where a.Email=$username or a.Mobile_no=$username""".as[(String)])

    dbConfig.run(a2)

    }

因此,我收到的回复格式为"["12345"]"

预期的输出格式为

"[{"Password":"12345"}]"

1 个答案:

答案 0 :(得分:0)

您应该定义自定义Json Writes来格式化查询结果。 例如:

import play.api.libs.json.{JsPath, JsValue, Json, Writes}

// Given passwords
val passwords: Seq[(String)] = Seq(("12345"), ("qwerty"))
val writes : Writes[String] = (JsPath \ "password").write[String]

def toJson[T](sequence: Seq[T])(implicit writes: Writes[T]): JsValue = {
  Json.toJson(sequence)
}

toJson(passwords)(writes)

这将输出json对象[{"password":"12345"},{"password":"qwerty"}]