Я знаю, что этот вопрос задан тысячу раз, но я не могу понять, почему этот код не может работать должным образом.Json format with Play 2.4/Scala
case class Partner
(_id: Option[BSONObjectID], name: String, beacon: Option[Beacon])
class PartnerFormatter @Inject() (val beaconDao: BeaconDao){
implicit val partnerReads: Reads[Partner] = (
(__ \ "_id").readNullable[String]and
(__ \ "name").read[String] and
(__ \ "beacon").read[String]
)((_id, name, beaconID) => Partner(_id.map(BSONObjectID(_)), name, Await.result(beaconDao.findById(beaconID), 1 second))))
implicit val partnerWrites: Writes[Partner] = (
(JsPath \ "_id").writeNullable[String].contramap((id: Option[BSONObjectID]) => Some(id.get.stringify)) and
(JsPath \ "name").write[String] and
(JsPath \ "beacon").writeNullable[String].contramap((beacon: Option[Beacon]) => Some(beacon.get._id.get.stringify))
)(unlift(Partner.unapply))
}
И я столкнулся
No Json deserializer found for type models.Partner. Try to implement an implicit Reads or Format for this type
Или
No Json deserializer found for type models.Partner. Try to implement an implicit Writes or Format for this type
Не должна ли она работать?
убедитесь, что эти implicits фактически присутствуют, когда преобразование происходит –
Импортируя их? – buzz2buzz
Да, я не уверен в деталях игры, но с помощью Spray обычно мне не хватает импорта. Я просто исправил ту же самую проблему на службе AkkaHttp, и ей не хватало этого импорта в верхней части файла: import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ Надеюсь, это поможет вам на правильном пути –