请问有人能向我展示如何在Play框架(特别是Play v2.3.x)中使用Scala将case class类的实例转换为JSON吗?
例如,我有以下代码:
case class Foo(name: String, address: String)
def index = Action {
request => {
val foo = Foo("John Derp", "Jem Street 21") // I want to convert this object to JSON
Ok(Json.toJson(foo)) // I got error at here
}
}
错误信息:
更新:我发现上述错误是由于导入了错误的无法将com.fasterxml.jackson.databind.JsonNode的实例写入HTTP响应。尝试定义一个Writeable [com.fasterxml.jackson.databind.JsonNode]
Json
类引起的,正确的应该是:import play.api.libs.json.Json
。但是我仍然遇到下面的隐式问题。我已经阅读了这个教程,但是当我尝试使用隐式的
Writes[Foo]
代码时: implicit val fooWrites: Writes[Foo] = (
(JsPath \ "name").write[String] and
(JsPath \ "address").write[String]
)(unlift(Foo.unapply))
我在Intellij中遇到了无法解析符号和
和无法解析符号unlift
的错误。同时,教程中的代码看起来很复杂,仅仅是将对象转换为JSON。我想知道是否有更简单的方法?
play.api.libs.functional.syntax._
。我提供的文档链接应该可以回答您关于unlift
的问题,同时还包含有关 Play JSON 的足够一般信息。 - edi