2017-08-02 5 views
0

私はスカラーが初めてです。いくつかのJSONオブジェクトを扱っていて、JSONオブジェクトで使用できるすべてのキーのセットを取得したいと考えています。スカラの可変セットにJSONObject.KeySet()を追加しました

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 

エラーが自身のために語っています私はこのような何かをしようとしています。 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)

だから、何がキーのアクセスリストを取得するより良いアプローチのようになります。

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

IDEはというエラーを与える: は、私はまた、ファイルにキーを書き込みしようとしましたか?

ご協力いただければ幸いです。ありがとうございました。

答えて

1

あなたはJavaConvertersを使用することができます。

import scala.collection.JavaConverters._ 

val keys = jsonObject.keySet.asScala 

keysscala.collection.mutable.Setです。不変のScala Setを作成するには、代わりに次のようにします:

val keys = jsonObject.keySet.asScala.toSet 
+0

答えをありがとう。私はこのようなことをすることができました: 'json.keySet()。asScala.foreach {x => set.add(x)}'。今はうまくいく。これをあなたの答えに加えてください。私はそれを受け入れます。 –

関連する問題