如何在以下代码中检索键“name”的值:
import scala.util.parsing.json._
val result = JSON.parseFull("""
{"name": "Naoki", "lang": ["Java", "Scala"]}
""")
result match {
case Some(e) => println(e) // => Map(name -> Naoki, lang -> List(Java, Scala))
case None => println("Failed.")
}
当我使用e("name")
时,我得到了
error: Any does not take parameters
case Some(e) => println(e("name")) // => Map(name -> Naoki, lang -> List(Java, Scala))
用println(result.flatMap(_.get("name")))
解包让我:
error: value get is not a member of Any
println(result.flatMap(_.get("name")))
答案 0 :(得分:3)
parseFull
的{{3}}说:
def parseFull(input:String):选项[Any]
解析给定的JSON字符串并返回List [Any](如果是JSON) string指定一个Array,如果是JSON字符串,则指定Map [String,Any] 指定一个对象。
因此,如果您更改match
以查找Map[String, Any]
案例,那么您可以调用其方法:
result match {
case Some(m: Map[String, _]) => m("name") // or m.get("name") for an Option
case _ => sys.error("Failed.")
}