私はplayframework 2で組み込みのjersonを使用しています。私が望むのは、異なるタイプの値を含むマップをシリアライズすることだけです:
object AppWriter extends Writes[Application] {
def writes(app: Application): JsValue = {
Json.toJson(Map(
"id" -> app.getId.toString,
"name" -> app.getName,
"users" -> Seq(1, 2, 3)
))
}
}
この場合、私は持っています:
No Json deserializer found for type scala.collection.immutable.Map[java.lang.String,java.lang.Object].
Try to implement an implicit Writes or Format for this type
フレームワーク コードをナビゲートすると、 Map[String,V] 型の暗黙的な def mapWrites[V] .. のシリアライザーがあることが示されますが、なぜそれが適用されないのか理解できません。
誰でも私を助けることができますか?
UPD :簡単な回避策を見つけました:
object AppWriter extends Writes[Application] {
def writes(app: Application): JsValue = {
Json.toJson(Map[String, JsValue](
"id" -> JsNumber(BigDecimal(app.getId)),
"name" -> JsString(app.getName),
"users" -> JsArray(Seq(1, 2, 3).map(x => JsNumber(x)))
))
}
}
しかし、これはそれほどエレガントではありません...