Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 解析JSON和选项[Any]_Scala - Fatal编程技术网

Scala 解析JSON和选项[Any]

Scala 解析JSON和选项[Any],scala,Scala,如果这个问题太简单,我很抱歉,我只是从Scala开始 我试图在Scala中解析一些JSON,但我在理解下面发生的事情时遇到了一些困难: scala> import scala.util.parsing.json.JSON scala> val x = JSON.parseFull("""{"name": "x", "lang": "en"} """) x: Option[Any] = Some(Map(name -> x, lang -> en)) 现在,由于par

如果这个问题太简单,我很抱歉,我只是从Scala开始

我试图在Scala中解析一些JSON,但我在理解下面发生的事情时遇到了一些困难:

scala> import scala.util.parsing.json.JSON
scala> val x = JSON.parseFull("""{"name": "x",  "lang": "en"} """)

x: Option[Any] = Some(Map(name -> x, lang -> en))
现在,由于parseFull返回一个选项[Any],并且我知道它确实包含一个值,我可以写:

scala> x.get
res6: Any = Map(name -> x, lang -> en)
我该如何处理这些结果?我希望直接访问键或值,执行类似于x.get(“name”)的操作


非常感谢

因此,如果您使用纯Scala解析选项,您将得到一个Any,您可以将其转换回映射:

scala> x.get.asInstanceOf[Map[String,String]]
res6: Map[String,String] = Map(name -> x, lang -> en)

scala> x.get.asInstanceOf[Map[String,String]].get("lang")
res7: Option[String] = Some(en)

scala> x.get.asInstanceOf[Map[String,String]].get("lang").get
res8: String = en
这有点麻烦;有一些库强制使用更干净的接口来处理一些转换,例如


我也相信其他人。

试着看看这个问题——基本上,你的问题是,你存储的parseFull()变量无法知道正在创建的结构类型,因此它被设置为“Any”对象。您可以通过在各种错误处理条件下包装它来解决这个问题。