2017-08-24 9 views
0
val json = Json.parse(jsonString) 
(json \ "theme" \ "structure" \ "layers") 

層JSONキーを順次プレイJSONマップオブジェクトキー

{0: {}, 1: {}, 2: {}} 

のように番号が付けキーを持つオブジェクトである私は私のことがあったり、キーのスキーマますどのように多くのキーがわかりませんキーを取得しようとすると、それぞれが存在します。

私は

(json \ "theme" \ "structure" \ "layers" \ "0" \ "mykey") 

を使用してそれらにアクセスすることができますが、私はプログラム的にそれらを反復し、それぞれに「mykeyを」の値をチェックできるようにする必要が数百層が時々ありますよう。

答えて

0
(json \ "theme" \ "structure" \ "layers") 
    .get 
    .as[Map[String, JsObject]] 
    .map(x => (x._1, (x._2 \ "mykey").get.as[String])) 

これは私に役立ちました。

+0

'.get'は' Option'や 'Try'のように安全でない/悪い習慣です。 – cchantep