Keine Instanz von play.api.libs.json.Format ist verfügbar für scala.Iterierbar[java.lang.String]

Versuchen abzubilden, eine einfache Klasse mit play-version 2.6.2 und scala 2.11.11

import play.api.libs.json._
import play.api.libs.json.util._
import play.api.libs.json.Reads._
import play.api.libs.json.Writes._
import play.api.libs.json.Format._
import play.api.libs.functional.syntax._

case class ObjectInfo (
    names : Iterable[String],
    info : Iterable[String]
)

object ObjectInfo {

  /**
    * Mapping to and from JSON.
    */
  implicit val documentFormatter = Json.format[ObjectInfo]

}

immer:

Keine Instanz von play.api.libs.json.Format ist verfügbar für
scala.Iterierbar[java.lang.String], scala.Iterierbar[java.lang.String] in
die implizite Geltungsbereich (Hinweis: wenn bei der Deklaration in der gleichen Datei, stellen Sie sicher, dass es
zuvor deklarierte)

Ich hatte erwartet, Spielen automatisch anzeigen diese Felder, da Sie nicht die komplexe Objekt-Typen, aber einfache Auflistung von Zeichenfolgen.

InformationsquelleAutor guilhebl | 2017-08-04

 

One Reply
  1. 2

    Die Sie „zu viel“ implizite Sachen mit-Importen. Wenn Sie entfernen Sie alle importiert, aber die ersten ein, es wird kompiliert und tun, was Sie wollen.

    Wenn Sie aktivieren impliziten parameter-Protokollierung über die scalac option -Xlog-implicits sehen Sie verschiedene „ambigouity“ und „diverging implicit expansion“ – Fehler. Die widersprüchlichen Importe import play.api.libs.json.Reads._/import play.api.libs.json.Writes._ und import play.api.libs.json.Format._. Vielleicht kann jemand anders erklären, diesen Konflikt im detail.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.