Спроба зіставити простий клас за допомогою версії 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._
. Можливо, хтось інший може пояснити цей конфлікт більш детально.