【问题标题】:Adding JSONObject.KeySet() to a Mutable Set in scala将 JSONObject.KeySet() 添加到 scala 中的可变集
【发布时间】:2018-01-09 23:01:57
【问题描述】:

我是 scala 的新手。我正在使用一些 JSON 对象,并希望获得 JSON 对象中可用的所有键的集合。我正在尝试做这样的事情:

var set = scala.collection.mutable.Set[String]()
for(condition) {    
  set ++= jsonObject.keySet().asInstanceOf[Set[String]]
}

当我运行代码时,我收到以下错误:

java.lang.ClassCastException: java.util.HashMap$KeySet cannot be cast to scala.collection.mutable.Set

错误不言自明。 我还尝试将密钥写入文件:

json2.keySet().toArray().foreach { x => keysWriter.write(x) }

IDE 给出错误提示:overloaded method value write with alternatives: (x$1: Int)Unit <and> (x$1: String)Unit <and> (x$1: Array[Char])Unit cannot be applied to (Object)

那么,获得可访问的键列表的更好方法是什么?

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: json scala collections


    【解决方案1】:

    你可以使用JavaConverters:

    import scala.collection.JavaConverters._
    
    val keys = jsonObject.keySet.asScala
    

    keys 是一个scala.collection.mutable.Set。要创建不可变的 Scala Set,请改为:

    val keys = jsonObject.keySet.asScala.toSet
    

    【讨论】:

    • 感谢您的回答。我能够做这样的事情:json.keySet().asScala.foreach { x => set.add(x) }。它现在工作正常。请将此添加到您的答案中,我会接受。
    猜你喜欢
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2019-05-21
    相关资源
    最近更新 更多