2017-07-20 3 views
0

私のケースクラスは次のようになります。なっserealizingケースクラスは

object PersonSerealizer { 

    implicit val PersonalInfoFormat: OFormat[PersonalInfo] = Json.format[PersonalInfo] 
    implicit val CreditCardFormat: OFormat[CreditCard] = Json.format[CreditCard] 
    implicit val BankInfoFormat: OFormat[BankInfo] = Json.format[BankInfo] 
    implicit val PersonFormat: OFormat[Person] = Json.format[Person] 

} 

中:

case class Person(personalInfo: PersonalInfo, bankInfo: BankInfo) 

case class PersonalInfo(fname: String, lname: String) 
case class BankInfo(atmCode: Int, creditCard: CreditCard) 
case class CreditCard(number: Int, experationDate: String) 

はので、私は人のためserealizerを追加私のコントローラで人を取得できるようにします

:私のコントローラ私はこのようになり、超シンプルなアクションを持っています210

が、私はこのエラーを取得:

Error:(23, 81) No unapply or unapplySeq function found for class BankInfo:/ implicit val BankInfoFormat: OFormat[BankInfo] = Json.format[BankInfo]

何かがおかしいです...私はそれはあなたの暗黙の定義の

+0

これは、問題はあなたのコード'暗黙のヴァルRouterInvoiceDataFormatでどこかにこの行であることを意味しています。ここに示したコードとは関係ありません。この行がどこにあっても、BankInfoシリアライザをインポートする必要があります。 –

答えて

1

順序が問題のようです動作するようになっ知っているから。また、コンパニオンオブジェクトを任意のオブジェクトの内部で定義するのではなく、使用する方が安全だと思います。 OFormat [BankInfo] = Json.format [BankInfo] `:

case class PersonalInfo(fname: String, lname: String) 
    object PersonalInfo { 
    implicit val personalInfoJsonFormat = Json.format[PersonalInfo] 
    } 

    case class CreditCard(number: Int, experationDate: String) 
    object CreditCard { 
    implicit val creditCardJsonFormat = Json.format[CreditCard] 
    } 

    case class BankInfo(atmCode: Int, creditCard: CreditCard) 
    object BankInfo { 
    implicit val bankInfoJsonFormat = Json.format[BankInfo] 
    } 

    case class Person(personalInfo: PersonalInfo, bankInfo: BankInfo) 
    object Person { 
    implicit val personJsonFmt = Json.format[Person] 
    } 

    // Your action will be like this 
    def getBrothers() = Action.async(parse.json) { req => 
    req.body.validate[Person] match { 
     case JsSuccess(p, _) => 
     Future.successful(Ok(Json.toJson(service.getBrothers(p)))) 
     case JsError(errors) => 
     Future.successful(BadRequest(JsError.toJson(errors))) 
    } 
    } 
+0

まだ私の問題を解決し、すべての順序を固定しました。そのクラスのunapplyまたはunapplySeq関数が見つかりませんでした。これは変です –

+0

編集の変更を確認してください。あなたの行動は、間違いがどこから来たのかです。 –

関連する問題