Json 为播放2.1创建读取时出现类型不匹配错误

Json 为播放2.1创建读取时出现类型不匹配错误,json,scala,playframework-2.1,Json,Scala,Playframework 2.1,我已经玩了好几个小时了。我一直在尝试不同的方法来创造一个阅读,我只是完全被难住了 我正在玩play2.1.0和scala2.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 c

我已经玩了好几个小时了。我一直在尝试不同的方法来创造一个阅读,我只是完全被难住了

我正在玩
play2.1.0
scala2.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
}
{
  user: {
    id: "35fc8ba5-56c3-4ebe-9a21-489a1a207d2e",
    username: "flastname",
    first_name: "Firstname",
    last_name: "Lastname",
    email_address: "foo@bar.com",
    user_avatar: "http://blog.ideeinc.com/wp-content/uploads/2010/04/tineye-robot.jpg"
  }
}
代码:

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
}
{
  user: {
    id: "35fc8ba5-56c3-4ebe-9a21-489a1a207d2e",
    username: "flastname",
    first_name: "Firstname",
    last_name: "Lastname",
    email_address: "foo@bar.com",
    user_avatar: "http://blog.ideeinc.com/wp-content/uploads/2010/04/tineye-robot.jpg"
  }
}
JSON:

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
}
{
  user: {
    id: "35fc8ba5-56c3-4ebe-9a21-489a1a207d2e",
    username: "flastname",
    first_name: "Firstname",
    last_name: "Lastname",
    email_address: "foo@bar.com",
    user_avatar: "http://blog.ideeinc.com/wp-content/uploads/2010/04/tineye-robot.jpg"
  }
}
这应该起作用:

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 _

有关更多信息,请参阅问题。

您应该尝试升级到2.1.1,Json和伴生对象有一些修复(Json宏修复和改进)。并始终使用
Registration.apply 
这看起来与所有文档都大不相同…哈哈。但这似乎奏效了。