如何在Play framework 2.3.x(Scala)中将POJO转换为JSON?

任何人都可以告诉我如何使用 Scala将POJO或类实例转换为Play框架中的 JSON(特别是Play v2.3.x)?

例如,我有这样的代码

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
      }
}

错误消息:

Cannot write an instance of com.fasterxml.jackson.data bind.JsonNode
to HTTP response. Try to define a
Writeable[com.fasterxml.jackson.databind.JsonNode]

更新:我发现上面的错误是由于错误导入Json类引起的,它应该是:import play.api.libs.json.Json.但是我仍然在下面的隐含问题上有错误.

我读过this tutorial,但是当我尝试隐式Writes [Foo]代码时:

implicit val fooWrites: Writes[Foo] = (
        (JsPath \ "name").write[String] and
            (JsPath \ "address").write[String]
        )(unlift(Foo.unapply))

我得到无法解析符号和无法解决Intellij中的符号解除错误.此外,教程的代码看起来很复杂,只是为了将对象转换为JSON.我想知道是否有更简单的方法来做到这一点?

解决方法

您可以使用Json.writes获取Writes [Foo]实例:

implicit val fooWrites = Json.writes[Foo]

将此隐含在范围内是将Foo转换为JSON所需的全部内容.有关JSON读/写的更多信息,请参阅文档herehere.

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...