JSON と Play Framework 2.1.0 および Scala 2.10 を使用してシリアライズ/デシリアライズしようとしています。私は Anorm を使用しており、データベースに保存したい非常に単純なオブジェクトがあります。注文は非常に簡単です。
case class Order(id: Pk[Long] = NotAssigned, mfg: String, tp: String)
私のコントローラーでは、REST インターフェイスを構築して、Order インスタンス (上記) を JSON として受け入れて送信できるようにしようとしています。そこには、次のコードがあります。
implicit object PkFormat extends Format[Pk[Long]] {
def reads(json: JsValue):Pk[Long] = Id(json.as[Long])
def writes(id: Pk[Long]):JsNumber = JsNumber(id.get)
}
ただし、次のように「プレイ テスト」を実行すると、これはコンパイルに失敗します。
タイプ (json: play.api.libs.json.JsValue)play.api.libs.json.JsResult[anorm.Pk[Long]]; [エラー] メソッドの読み取りに互換性のない型があります [エラー] def 読み取り(json: JsValue):Pk[Long] = Id(json.as[Long])
なぜこれが起こっているのか誰にも分かりますか?
私は JAXB の経験が豊富ですが、Play と Scala についてはまったくの初心者で、これまでのところ答えを見つけることができませんでした。これは非常に単純な使用例のように思えます。実際には、より単純な解決策 (注釈など) があることを望んでいましたが、見つけることができませんでした (少なくともまだ)。
どんな助けでも大歓迎です!
ありがとう