【问题标题】:Scala, Play: IntelliJ cannot serialize Map[String, List[String]]Scala,Play:IntelliJ 无法序列化 Map[String, List[String]]
【发布时间】:2016-04-12 10:12:25
【问题描述】:

我有一个 Map[String, List[String]] 类型的对象。应该很容易序列化。事实上,如果我在项目目录中运行控制台,我可以这样做:

scala> import play.api.libs.json._
import play.api.libs.json._    

scala> Json.toJson(Map("ab" -> List("yo", "yo2", "yo3"), "cd" -> List("hi", "hi1", "hi2")))
res1: play.api.libs.json.JsValue = {"ab":["yo","yo2","yo3"],"cd":["hi","hi1","hi2"]}

这很好。但是 IntelliJ (Ultimate) 抱怨说

No Json serializer found for type scala.collection.Map[String,List[String]]. Try to implement an implicit Writes or Format for this type.

即使存在相同的 import play.api.libs.json._。我很困惑。有什么提示吗?

【问题讨论】:

  • 这是警告还是错误?我将尝试使缓存无效并首先重新启动 IntelliJ。
  • @RobertUdah 这是一个正确的错误:/ 使缓存无效并没有帮助..
  • 从日志看来,它需要一个隐式的写入值。
  • 也许可以尝试将导入和代码放入单个代码块 { import ...; Json.toJson ... } 或对象中
  • 您使用的是哪个版本的 Play?似乎对于旧版本存在这样的问题:stackoverflow.com/questions/14467689/… 可能在您的 IntelliJ 项目中,您使用的 Play 版本与您在 scala 控制台中导入的不同版本的 json lib 解析不同?

标签: json scala playframework


【解决方案1】:

相当蹩脚:问题是 scala.collection.Map 和 scala.Predef.Map (== scala.collection.immutable.Map) 之间的(隐藏)不匹配。我希望它会更明显。

【讨论】:

    猜你喜欢
    • 2016-07-21
    • 1970-01-01
    • 2019-09-10
    • 2016-11-25
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多