scala - 如何使用scala Play2.6从数据库中选择单列
问题描述
我有一个表用户详细信息表,它包含以下列
用户名、用户名、邮箱
我想选择用户 ID 为 1 的电子邮件,并且我希望响应为正确的 JSON 格式
如何在 Scala Play 2.6 中使用 Slick
做到这一点直到现在我已经做到了
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"}]"
解决方案
您应该定义自定义Json 写入来格式化您的查询结果。例如:
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"}]
推荐阅读
- c - 将 D 项目编译为库 - 依赖项会发生什么?
- php - 如何使用 php 从 URL 中获取第三个字符串
- mongodb - MongoDB 在 Studio 3T 中读取集合的速度很慢
- yaml - 设置 bitbucket 管道 yaml 文件
- elasticsearch - 以 24/h 时间格式设置 Logstash 输出索引
- wso2 - 如何使用接收器类型为“http-response”的另一个流的响应更新流
- javascript - 在移动 chrome 中滚动闪烁动画
- reactjs - 如何在迭代中显示 JSX 中的数据?
- node.js - 来自nodejs中的循环的dynamodb upsert
- python - 我怎样才能防止空格被删除并且我的值只在 1 行?