Scala播放2框架如何在Json上实现写或格式

时间:2015-03-14 06:31:53

标签: json scala playframework-2.0

我是Scala的新手并且玩2并且没有找到使用Anorm从数据库返回Json请求的方法。这是我的简单代码

  def locations = Action {implicit c=>
import play.api.libs.json._
 implicit val readLocations = SQL("select city,state from zips limit 1")

  Ok(Json.toJson(readLocations))
 }

该方法是一个帖子,我只想通过数据库表中的Json 1记录返回,但是我得到了这个错误 错误:(57,21)播放2编译器: .scala:57:找不到类型为anorm.SqlQuery的Json序列化程序。尝试为此类型实现隐式写入或格式。        OK(Json.toJson(readLocations))

任何建议都会受到欢迎,我已经将代码转换为上面的代码,但没有任何工作。我知道我需要写一个写或格式,但似乎无法找到如何。

                 ^**

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试发送地点列表。你可以这样做:

  def locations = Action {implicit c=>
    import play.api.libs.json._
    implicit val locationFmt = Json.format[Location]

    case class Location(city: String, state: String)

    //Send Multiple Locations if you want
    val readLocations = SQL("select city,state from zips").list.map{case Row(city: String, state: String) =>
      Location(city, state)
    }

    // Send a single Location
    val readLocation = SQL("select city,state from zips limit 1").list.headOption.map{case Row(city: String, state: String) =>
      Location(city, state)
    }.getOrElse(throw new NoSuchElementException)

    Ok(Json.toJson(readLocation))
  }