【问题标题】:No instance of play.api.libs.json.Format is available for scala.Iterable[java.lang.String]scala.Iterable[java.lang.String] 没有 play.api.libs.json.Format 的实例
【发布时间】:2017-08-04 14:22:48
【问题描述】:

尝试使用 play 版本 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 自动映射这些字段,因为它们不是复杂的对象类型,而是简单的字符串集合。

【问题讨论】:

    标签: json scala playframework format mapping


    【解决方案1】:

    您在导入时提供了“太多”的隐含内容。如果您删除除第一个以外的所有导入,它将编译并执行您想要的操作。

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

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      相关资源
      最近更新 更多