У меня есть класс случае определяется следующим образом:Определение сценариев для класса case, который содержит свойство, тип которого является Map. Json/Scala/PlayFramework
scala> import play.api.libs.json._
import play.api.libs.json._
scala> import play.api.libs.functional.syntax._
import play.api.libs.functional.syntax._
scala> type MapIntString = Map[Int, String]
defined type alias MapIntString
case class Duh(a: MapIntString)
defined class Duh
Когда я попытался объявить его Записывает таким образом, я получил сообщение об ошибке:
scala> implicit val duhWrites = Json.writes[Duh]
<console>:25: error: No implicit Writes for MapIntString available.
implicit val duhWrites = Json.writes[Duh]
Так что я прибегаю к этому. .., все еще получена ошибка:
scala> implicit val duhWrites: Writes[Duh] = (
| (JsPath \ "a").write[MapIntString]
|)(unlift(Duh.unapply _))
<console>:26: error: overloaded method value write with alternatives:
(t: MapIntString)(implicit w: play.api.libs.json.Writes[MapIntString])play.api.libs.json.OWrites[play.api.libs.json.JsValue] <and>
(implicit w: play.api.libs.json.Writes[MapIntString])play.api.libs.json.OWrites[MapIntString]
cannot be applied to (Duh => MapIntString)
(JsPath \ "a").write[MapIntString]
Может ли кто-нибудь помочь мне указать, где я ошибся?
Я чувствую, что мое понимание этого читает/пишет комбинаторы немного шатким. Я разместил связанный с этим вопрос (когда я пытался понять, что происходит): What is this "and" in ScalaJsonCombinator (when defining a Writes)?
Если вы знаете, как лучше всего использовать Writes и Reads для «Duh», поделитесь им.
Заранее благодарен!
Thanks! ты спас мой день. –