我是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)
答案 0 :(得分: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"}
答案 1 :(得分: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))