/ / Play framework 2.3.x(Scala)でPOJOをJSONに変換する方法は? -json、scala、playframework、playframework-2.0

Play Framework 2.3.x(Scala)でPOJOをJSONに変換する方法は? - json、scala、playframework、playframework-2.0

ScalaでPlayフレームワーク(特にPlay v2.3.x)でPOJOまたはクラスインスタンスを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.data bind.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))

私は持っている Can"t resolve symbol and そして Can"t resolve symbol unlift Intellijのエラー。また、チュートリアルのコードは、オブジェクトをJSONに変換するためだけに複雑に見えます。これを行うためのより簡単な方法があるのでしょうか。

回答:

回答№1の場合は7

あなたは Writes[Foo] を使用してインスタンス Json.writes

implicit val fooWrites = Json.writes[Foo]

この暗黙のスコープを持つことは、変換する必要があるすべてです Foo JSONへ。文書を見る ここに そして ここに JSONの読み取り/書き込みの詳細については。


回答№2の場合は1

2番目の問題- Can"t resolve symbol and -は Intellijのバグ Scalaプラグインのバージョン1.3で導入されました。 Scalaプラグインのバージョン1.3.3では、回避策があります-設定チェックボックスを設定します:

言語とフレームワーク> Scala>コア(デフォルト)タブ>古いを使用 暗黙的な検索アルゴリズム