【发布时间】:2016-02-17 13:56:26
【问题描述】:
我是 Scala 的新手,现在正在尝试学习 Slick。我在 Slick 教程中设置了一个数据库,并使用
val users:TableQuery[user] = TableQuery[user]
如何从 Play 框架将 users -value 输出到 JSON?我已经尝试为用户定义案例类并为 userFormat = Json.format[user] 制作阅读器+编写器,但我不知道我哪里出错了。我用 Spray.IO 做过类似的事情,在那里看起来很简单直接,但我想学习如何用 Play 和 Slick 来做这件事,我完全迷失了:(
这是我的 Tables.scala:
package assets
import org.joda.time.DateTime
import play.api.libs.json._
import scala.slick.driver.MySQLDriver.simple._
import com.github.tototoshi.slick.MySQLJodaSupport._
import scala.slick.lifted.{ProvenShape}
case class user
(
id:Int,
textId:String,
sessionId:String,
stamp:DateTime
)
class users(tag: Tag) extends Table[(Int, String, String, DateTime)](tag, "USER") {
implicit object userFormat extends Format[user] {
def writes(a: user): JsValue = {
Json.obj(
"id" -> JsNumber(a.id),
"textId" -> JsString(a.textId),
"sessionId" -> JsString(a.sessionId),
"stamp" -> JsString(a.stamp.toString())
)
}
def reads(json: JsValue): user = user(
(json \ "id").as[Int],
(json \ "textId").as[String],
(json \ "sessionId").as[String],
(json \ "stamp").as[DateTime]
)
}
def id: Column[Int] = column[Int]("id", O.PrimaryKey)
def textId: Column[String] = column[String]("textId")
def sessionId: Column[String] = column[String]("sessionId")
def stamp: Column[DateTime] = column[DateTime]("stamp")
def * : ProvenShape[(Int, String, String, DateTime)] = (id,textId,sessionId,stamp)
}
【问题讨论】:
标签: json scala playframework slick