加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Playframework Scala中列出Json

发布时间:2020-12-16 08:48:05 所属栏目:安全 来源:网络整理
导读:我是 scala和playframework的新手,但到目前为止它很棒.我无法弄清楚如何将数据列表转换为json(或实际上任何复杂的结构).这不是一个现实世界的例子,但这是我想要做的.从数据库中获取一些数据. scala val result:List[(Long,String)] = DB.withConnection { im
我是 scala和playframework的新手,但到目前为止它很棒.我无法弄清楚如何将数据列表转换为json(或实际上任何复杂的结构).这不是一个现实世界的例子,但这是我想要做的.从数据库中获取一些数据.

scala> val result:List[(Long,String)] = DB.withConnection { implicit c => 
    SQL("select * from users").as(
     long("id")~str("uid") map(flatten)*)
  }
 result: List[(Long,String)] = List((3,397a73ee5150429786863db144341bb3),(4,2850760dc9024c16bea6c8c65f409821),(5,636ee2bf758e4f699f27890ac55d7db2))

我希望能够将其变成json并将其返回.基于这个文档,看起来我需要遍历并在结果上调用toJson

http://www.playframework.org/documentation/2.0/ScalaJson

但是,实际上我在做这件事时遇到了麻烦.这甚至是正确的方法吗?是否有一些scala概念会使这个变得简单?我看到一些使用案例类的例子,但我还没有完全围绕这个概念.

我真的不希望这个工作,但我想我在概念上试图做这样的事情

scala> toJson(Map("response" -> result))
<console>:27: error: No Json deserializer found for type     scala.collection.immutable.Map[java.lang.String,List[(Long,String)]]. Try to implement an     implicit Writes or Format for this type.
          toJson(Map("response" -> result))

谢谢

解决方法

如上所述,您可以编写自己的隐式Write来执行此操作,但您也可以依赖现有的Writes,只需将数据检索为List [Map [String,Any]]并在其上应用toJson:

val simple = {
    get[Pk[Long]]("user.id") ~
    get[Long]("user.uid") map {
        case id~uid => Map("id" -> id.get.toString,"uid" -> uid.toString)
    }
}
val result:List[Map(String,String)] = DB.withConnection { implicit c => 
    SQL("select * from users").as(User.simple *)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读