0
はのは、私は次のモデルがあるとしましょう:オブジェクトのカスタムReactiveMongoリーダー&ライターを作成するには?
case class Game(var _id: Option[BSONObjectID] = None,
name: String,
genre: Genre.Kind,
var created: Option[DateTime] = None,
var updated: Option[DateTime] = None
)
私は次のようにGame
のインスタンスを格納したい:Genre
については {"_id": "ObjectId(12345)", "name": "My Shooter Game", "genre": "Shooter", …}
私は文字列として値を格納したいのですが、プログラム的に私が欲しいです値ではなく型を扱う。
No unapply or unapplySeq function found
の場合:
implicit val genreJsonFormat = Json.format[Genre.Kind]
任意のアイデア私が達成できるか
object Genre {
sealed trait Kind
implicit val genreJsonFormat = Json.format[Genre.Kind]
case object Shooter extends Kind {
val name = "Shooter"
override def toString = name
}
def getGenre(genre: String) = genre match {
case Shooter.name => Shooter
// ...
}
implicit object GenreWriter extends BSONDocumentWriter[Genre.Kind] {
def write(genre: Genre.Kind): BSONDocument =
BSONDocument("genre" -> genre.toString)
}
implicit object GenreReader extends BSONDocumentReader[Genre.Kind] {
def read(doc: BSONDocument): Genre.Kind = Genre.getGenre(doc.getAs[String]("genre").get)
}
}
は、残念ながら、私はこのコンパイルエラーを取得:だからここ
は、私が仕事だろうと思ったものですそれ?
最初に[documentation](https://www.playframework.com/documentation/2.5.x/ScalaJson)を読むことをお勧めします – cchantep
'Json.format'はReactiveMongoでは提供されていませんが、JSONを再生します – cchantep