我想将显示if ( $part =~ /^sd/ and $part =~ /[^0-9]$/ ) {
print "\tBase: $part\n";
}
的结果查询映射到vector
case class
服务:
def selectPerson = sql"select * from PERSON".as[(String,String)]
控制器:
def ListPerson: Future[Seq[(String,String)]] = {
db.run(GroupDealerDetailDal.selectPerson)
}
案例类:
def listPerson = Action.async { implicit request =>
GroupDealerDetailService.ListPerson.map(result =>
Ok(Json.toJson(result.toString)))
}
结果为case class Person(username: String, password: String)
object Person {
implicit val personFormat = Json.format[Person]
}
如何将结果映射到Vector((prastyo,12345))
所以结果是case class Person
答案 0 :(得分:1)
听起来你想要JSON输出,所以我怀疑内部应该是这样的(未经测试):
GroupDealerDetailService.ListPerson.map { people => Ok(
Json.toJson(
people map { case (username, password) =>
Person(username, password)
}
)
)}
答案 1 :(得分:0)
如果您想将地图数据库结果发送到Json响应,则不需要额外的case class
和转换。
您可以使用海岸到海岸的设计与Json编写组合器。
简单写入
val u: OWrites[(String, String)] = (
(__ \ "username").write[String] and
(__ \ "password").write[String]
).tupled
将您的(String, String)
映射到JsObject
。
u.writes("prastyo" -> "12345")
res17: play.api.libs.json.JsObject = {"username":"prastyo","password":"12345"}
使用Writes.traversableWrites
val s = Writes.seq(u)
您可以将Vector
映射到JsArray
s.writes(Seq("prastyo" -> "12345"))
res16: play.api.libs.json.JsValue = [{"username":"prastyo","password":"12345"}]
完整的控制器:
def listPerson = Action.async {
GroupDealerDetailService.ListPerson.map(s.writes).map(Ok(_))
}