ошибка несоответствия типа при создании Reads for Play 2.1

Я играл с этим в течение нескольких часов. Я пробовал разные методы создания чтения, и я просто полностью озадачен.

Я на Play 2.1.0 и Scala 2.10.1

ОШИБКА:

type mismatch; found : models.Registration.type required: play.api.libs.json.Reads[?]

Код:

package models

import play.api.libs.json._
import play.api.libs.functional.syntax._

case class Registration(
        user: (String,String,String,String,String,String)
)

object RegistrationHelper {
    implicit val regReads: Reads[Registration] = (
      (__ \ "user").read(
        (__ \ "id").read[String] and
        (__ \ "username").read[String] and
        (__ \ "first_name").read[String] and
        (__ \ "last_name").read[String] and
        (__ \ "email_address").read[String] and
        (__ \ "user_avatar").read[String]
        tupled
      )
    )(Registration) //!!ERROR ON THIS LINE
}

JSON:

{
  user: {
    id: "35fc8ba5-56c3-4ebe-9a21-489a1a207d2e",
    username: "flastname",
    first_name: "Firstname",
    last_name: "Lastname",
    email_address: "[email protected]",
    user_avatar: "http://blog.ideeinc.com/wp-content/uploads/2010/04/tineye-robot.jpg"
  }
}

person Commander    schedule 03.04.2013    source источник
comment
Вы должны попробовать обновиться до 2.1.1, есть некоторые исправления для Json и сопутствующих объектов (исправления и улучшения макросов JSON). И всегда используйте Registration.apply _   -  person Julien Lafont    schedule 04.04.2013


Ответы (1)


Это должно работать:

implicit val regReads: Reads[Registration] = (__ \ "user").read(
    (__ \ "id").read[String] and
      (__ \ "username").read[String] and
      (__ \ "first_name").read[String] and
      (__ \ "last_name").read[String] and
      (__ \ "email_address").read[String] and
      (__ \ "user_avatar").read[String]
      tupled
  ) map Registration.apply _

См. это вопрос для получения дополнительной информации.

person Alex Yarmula    schedule 04.04.2013
comment
это выглядит совсем иначе, чем вся документация... лол. Но, похоже, это сработало. - person Commander; 04.04.2013