【发布时间】:2015-02-23 09:34:25
【问题描述】:
目前正在阅读/正在阅读“Scala 编程,第一版”,特别是第 31 章:Combinator Parsing
作者正在描述如何解析 JSON 文件并提供以下更高级的转换:
def obj: Parser[Map[String, Any]] = // Can be improved
"{"~repsep(member, ",")~"}" ^^
{ case "{"~ms~"}" => Map() ++ ms }
后来改进为:
def obj: Parser[Map[String, Any]] =
"{"~> repsep(member, ",") <~"}" ^^ (Map() ++ _)
但是,当我将此类代码输入到我的 IDE (IntelliJ IDEA 14.03) 中时,编译器会拒绝它:
JSON.this.type#Parser[Iterable[Any]] 类型的表达式不 符合预期类型 JSON.this.type#Parser[Map[String,Any]]
当然,我可以通过将 obj 的类型更改为 Parser[Iterable[Any]] 来消除此错误,但这并没有给出预期的结果。
这样做的正确方法是什么?
无论如何,我都在使用 jdk 1.7.0_71 和 sdk 2.11.5
【问题讨论】:
标签: json scala parsing dictionary parser-generator