1

我是 Play 2.1 和 Scala 的新手。我来自 node.js 背景,它直接以 JSON 形式从数据库返回结果。我想要的是在 Play(Scala) 中以 JSON 形式从数据库中获取数据。我试过 Json.toJson 但它显示反序列化器或其他东西的错误。任何人都可以通过模型和控制器描述找到解决此问题的方法。提前致谢。

我正在使用 Mysql 数据库。这是型号代码...

import anorm.SqlParser._
import play.api.db.DB

//class definition
case class     Data(Date_Time_id:BigInteger,Details:String,Image:Strig,Status:Boolean,Type:String)

object Model{
    def getDetails(Person_id:Long):Map[BigInteger,Data]={

    DB.withConnection{ implicit c=> 

val result=SQL("""select Date_Time_id,Details,Image,
    ,Status,Type from table1 where  Person_id={perId} 
    """).on("perId"->Person_id)

//mapping result
val detailss=result().map(row=>
        row[BigInteger]("Date_Time_id")->row[BigInteger]("Date_Time_id"),row[String]("Details"),row[String]("Image"),row[Boolean]("Status"),row[String]("Type"))).toMap
    return detailss

}
}

我从控制器调用它,例如:

var getResult=Model.getDetails(some Id)
4

2 回答 2

1

虽然没有人回答我的问题,但我已经找到了解决这个问题的方法。这里有几个步骤可以获取 json 形式的数据

// Add Dependency in Build.scala file we are using "com.google.code.gson" % "gson" % "2.1" for json


val appDependencies = Seq(
// Add your project dependencies here,
"mysql" % "mysql-connector-java" % "5.1.18",
"com.google.code.gson" % "gson" % "2.1" ,
jdbc,
anorm
)

现在你必须编码你的控制器,如下所示

import com.google.gson.Gson   //import google json library
case class Data(Date_Time_id:BigInteger,Details:String,Image:Strig,Status:Boolean,Type:String)    //create class

var getResult=Model.getDetails(some Id)
val detailsList = postDetails.values.toList  //convert map to list

val myData=new Details(detailsList(0).Date_Time_id,detailsList(0).Details,detailsList(0).Image,detailsList(0).Status,detailsList(0).Type)   //create object and pass data to class
val gson = new Gson                          //create Gson object
val jsonResponse=gson.toJson(myData)        //convert myData to JSON
prinln(jsonResponse)                        //print json to console

输出会像

{"Date_Time_id":123,"Details":"blahblah","Image":"abc.jpg","Status":true,"Type":"foo"}
于 2013-10-09T10:58:10.997 回答
0

执行以下操作可能会更容易:

import play.api.libs.json.Json

case class Data(...)
object Data {
  implicit val format = Json.format[Data]
}

val x:Data = ???

println(Json.toJson(x))
于 2014-10-21T21:15:18.087 回答