在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 *) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |