Circe: Beispiel für benutzerdefinierte Encoder/Decoder, die mit Scala 2.11.x fehlschlagen

Erstellt am 22. Sept. 2017  ·  6Kommentare  ·  Quelle: circe/circe

Das Beispiel aus der Dokumentation schlägt auf Scala 2.11.11 fehl, aber ich kann es erfolgreich auf Scala 2.12.x ausführen

scala> class Thing(val foo: String, val bar: Int)
defined class Thing

scala> implicit val encodeFoo: Encoder[Thing] = new Encoder[Thing] {
     |   final def apply(a: Thing): Json = Json.obj(
     |     ("foo", Json.fromString(a.foo)),
     |     ("bar", Json.fromInt(a.bar))
     |   )
     | }
encodeFoo: io.circe.Encoder[Thing] = $anon$1<strong i="7">@bfe134d</strong>

scala> implicit val decodeFoo: Decoder[Thing] = new Decoder[Thing] {
     |   final def apply(c: HCursor): Decoder.Result[Thing] =
     |     for {
     |       foo <- c.downField("foo").as[String]
     |       bar <- c.downField("bar").as[Int]
     |     } yield {
     |       new Thing(foo, bar)
     |     }
     | }
<console>:17: error: value flatMap is not a member of io.circe.Decoder.Result[String]
             foo <- c.downField("foo").as[String]
                                         ^
<console>:18: error: value map is not a member of io.circe.Decoder.Result[Int]
             bar <- c.downField("bar").as[Int]

Hilfreichster Kommentar

Um dieses Problem zu lösen, können Sie entweder Katzen verwenden, importieren Sie es einfach:
import cats.syntax.either._

Alle 6 Kommentare

habe den gleichen Fehler auf Scala 2.10.6

Ich habe das gleiche Problem auf Scala 2.11 mit der Circe 0.5.2-Version

Ich denke, das Problem ist, dass die Scala 2.11.x entweder nicht über die Karte/FlatMap verfügt, die neuen Methoden werden in der Version 2.12 eingeführt

Um dieses Problem zu lösen, können Sie entweder Katzen verwenden, importieren Sie es einfach:
import cats.syntax.either._

Warum aktualisieren Sie dies nicht im Dokument? neue Benutzer können in diesem Problem stecken bleiben.

@djvulee Das ist durch die Ritzen gerutscht, aber eine PR wäre sehr willkommen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen