/ / Ninguna instancia de play.api.libs.json.Format está disponible para scala.Iterable [java.lang.String] - json, scala, playframework, format, mapping

No hay ninguna instancia de play.api.libs.json.Format disponible para scala.Iterable [java.lang.String] - json, scala, playframework, format, mapping

Intentando mapear una clase simple usando play versión 2.6.2 y 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]

}

consiguiendo:

Ninguna instancia de play.api.libs.json.El formato está disponible para scala.Iterable [java.lang.String], scala.Iterable [java.lang.String] en el alcance implícito (Sugerencia: si se declara en el mismo archivo, asegúrese de que sea declarado antes)

Esperaba que Play asignara automáticamente estos campos ya que no son tipos de objetos complejos sino una simple Colección de cadenas.

Respuestas

2 para la respuesta № 1

Usted proporciona "demasiado" material implícito con sus importaciones. Si elimina todas las importaciones excepto la primera, se compilará y hará lo que desee.

Si habilita el registro de parámetros implícitos a través de la opción scalac -Xlog-implicits, verá varios errores de "ambigüedad" y "expansión implícita divergente". Las importaciones en conflicto son import play.api.libs.json.Reads._/import play.api.libs.json.Writes._ y import play.api.libs.json.Format._. Quizás alguien más pueda explicar este conflicto con más detalle.