没有play.api.libs.json.Format的实例可用于scala.Iterable [java.lang.String]

时间:2017-08-04 14:22:49

标签: 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.Format的实例可供使用   scala.Iterable [java.lang.String],scala.Iterable [java.lang.String] in   隐式范围(提示:如果在同一个文件中声明,请确保它   之前宣布)

我希望Play自动映射这些字段,因为它们不是复杂的对象类型,而是简单的字符串集合。

1 个答案:

答案 0 :(得分:2)

你提供太多"你的进口隐含的东西。如果删除所有导入但第一个导入,它将编译并执行您想要的操作。

如果您通过scalac选项-Xlog-implicits启用隐式参数记录,您将看到各种" ambigouity"和"分歧隐含扩张"错误。有冲突的导入是import play.api.libs.json.Reads._ / import play.api.libs.json.Writes._import play.api.libs.json.Format._。也许其他人可以更详细地解释这个冲突。