Json使用scala.util.parsing.json在Scala中解析

OZK*_*ZKA 2 json scala

我有一个json对象"{"id":1,"name":"OZKA","birthDate":"1981-02-08T20:00:00.000Z","monthRevenue":1000.75,"developer":true}"和代码:

println(request.getParameter("content"))//{"id":1,"name":"OZKA","birthDate":"1981-02-08T20:00:00.000Z","monthRevenue":1000.75,"developer":true}
val result = scala.util.parsing.json.JSON.parseFull(request.getParameter("content"))
result match {
  case Some(e) => { println(e); //output: Map(name -> OZKA, monthRevenue -> 1000.75, developer -> true, birthDate -> 1981-02-08T20:00:00.000Z, id -> 1.0)
    e.foreach((key: Any, value: Any) => {println(key + ":" + value)})
  }
  case None => println("Failed.")
}
Run Code Online (Sandbox Code Playgroud)

,当我尝试调用map或foreach函数时,编译器抛出一个错误"值foreach不是Any的成员".任何人都可以建议我一个方法,我如何解析这个json字符串并将其转换为Scala类型

z33*_*33m 7

你得到,因为编译器无法知道的类型的方式导致错误eSome(e)模式,其作为infered Any.并Any没有一种foreach方法.您可以通过显式指定的类型解决这个e作为Map.

其次,对于Map foreach有签名foreach(f: ((A, B)) ? Unit): Unit.匿名函数的参数是包含键和值的元组.

尝试这样的事情:

println(request.getParameter("content"))//{"id":1,"name":"OZKA","birthDate":"1981-02-08T20:00:00.000Z","monthRevenue":1000.75,"developer":true}
val result = scala.util.parsing.json.JSON.parseFull(request.getParameter("content"))
result match {
  case Some(e:Map[String,String]) => {
    println(e); //output: Map(name -> OZKA, monthRevenue -> 1000.75, developer -> true, birthDate -> 1981-02-08T20:00:00.000Z, id -> 1.0)
    e.foreach { pair =>
        println(pair._1 + ":" + pair._2)        
    }
  }
  case None => println("Failed.")
}
Run Code Online (Sandbox Code Playgroud)