没有play.api.libs.json.Format的实例可用于scala.Iterable [java.lang.String] [英] No instance of play.api.libs.json.Format is available for scala.Iterable[java.lang.String]

查看:578
本文介绍了没有play.api.libs.json.Format的实例可用于scala.Iterable [java.lang.String]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图映射一个简单的类使用播放版本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(
名称:Iterable [String],
info:Iterable [String]


对象ObjectInfo {
$ b $ / **
*映射往返于JSON。
* /
implicit val documentFormatter = Json.format [ObjectInfo]

}

获得:

lockquote

没有play.api.libs.json.Format的实例可用于
。scala.Iterable [java.lang.String],scala.Iterable [java.lang.String]在
中隐式作用域(提示:如果在同一个文件中声明,请确保它是之前声明的


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

解决方案

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

如果通过scalac选项启用隐式参数日志记录, -Xlog-implicits ,你会看到各种ambigouity和diverging implicit expansion错误。冲突的导入是 import play.api.libs.json.Reads ._ / import play.api.libs.json.Writes ._ import play.api.libs.json.Format ._ 。也许别人可以更详细地解释这个冲突。


Trying to map a simple class using play version 2.6.2 and 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]

}

getting:

No instance of play.api.libs.json.Format is available for scala.Iterable[java.lang.String], scala.Iterable[java.lang.String] in the implicit scope (Hint: if declared in the same file, make sure it's declared before)

I was expecting Play to automatically map these fields since they're not complex object types but simple Collection of strings.

解决方案

You provide "too much" implicit stuff with your imports. If you remove all imports but the first one, it will compile and do what you want.

If you enable implicit parameter logging via the scalac option -Xlog-implicits, you will see various "ambigouity" and "diverging implicit expansion" errors. The conflicting imports are import play.api.libs.json.Reads._/import play.api.libs.json.Writes._ and import play.api.libs.json.Format._. Maybe someone else can explain this conflict in more detail.

这篇关于没有play.api.libs.json.Format的实例可用于scala.Iterable [java.lang.String]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆