如何在 Play 框架 2.3.x (Scala) 中将大小写 class 转换为 JSON?
How to convert case class to JSON in Play framework 2.3.x (Scala)?
任何人都可以告诉我如何使用 Scala 在 Play 框架(特别是 Play v2.3.x)中将 case class 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
}
}
错误信息:
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
class 错误导入引起的,它应该是: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 中遇到 Can't resolve symbol and
和 Can't resolve symbol unlift
错误。此外,本教程的代码看起来很复杂,只是为了将对象转换为 JSON。请问有没有更简单的方法呢?
您可以使用 Json.writes
:
获得一个 Writes[Foo]
实例
implicit val fooWrites = Json.writes[Foo]
将此隐含在范围内是将 Foo
转换为 JSON 所需的全部内容。有关 JSON reads/writes.
的更多信息,请参阅文档 here and here
第二个问题 - Can't resolve symbol and
- 是 Scala 插件 1.3 版中引入的 Intellij bug。在 Scala 插件的 1.3.3 版本中,现在有一个解决方法 - 设置首选项复选框:
Languages & Frameworks > Scala > Core (default) tab > Use old
implicit search algorithm
任何人都可以告诉我如何使用 Scala 在 Play 框架(特别是 Play v2.3.x)中将 case class 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
}
}
错误信息:
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
class 错误导入引起的,它应该是: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 中遇到 Can't resolve symbol and
和 Can't resolve symbol unlift
错误。此外,本教程的代码看起来很复杂,只是为了将对象转换为 JSON。请问有没有更简单的方法呢?
您可以使用 Json.writes
:
Writes[Foo]
实例
implicit val fooWrites = Json.writes[Foo]
将此隐含在范围内是将 Foo
转换为 JSON 所需的全部内容。有关 JSON reads/writes.
第二个问题 - Can't resolve symbol and
- 是 Scala 插件 1.3 版中引入的 Intellij bug。在 Scala 插件的 1.3.3 版本中,现在有一个解决方法 - 设置首选项复选框:
Languages & Frameworks > Scala > Core (default) tab > Use old implicit search algorithm