/ / Екземпляр play.api.libs.json.Format для scala.Iterable [java.lang.String] - json, scala, playframework, format, mapping

Ніякий примірник play.api.libs.json.Format доступний для scala.Iterable [java.lang.String] - json, scala, playframework, format, mapping

Спроба зіставити простий клас за допомогою версії 2.6.2 і 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]

}

отримання:

Немає прикладу play.api.libs.json.Формат доступний для scala.Iterable [java.lang.String], scala.Iterable [java.lang.String] у неявна область дії (Підказка: якщо вона оголошена в одному файлі, переконайтеся, що вона " оголошено раніше)

Я очікував, що Play буде автоматично відображати ці поля, оскільки вони не є складними типами об'єктів, а просто колекцією рядків.

Відповіді:

2 для відповіді № 1

Ви надаєте "занадто багато" неявних матеріалів вашим імпортом. Якщо ви вилучите весь імпорт, але перший, він буде компілювати і робити те, що ви хочете.

Якщо ввімкнути неявну реєстрацію параметрів за допомогою параметра scalac -Xlog-implicits, ви побачите різні помилки "амбіготі" і "розходяться неявні розширення". Імпорт конфлікту є import play.api.libs.json.Reads._/import play.api.libs.json.Writes._ і import play.api.libs.json.Format._. Можливо, хтось інший може пояснити цей конфлікт більш детально.