2017-07-31 14 views
0

私はScala言語の新機能ですので、ここでいくつかの助けが必要です。ScalaでJSONArrayを繰り返す

私はこのJSONArray(org.jsonはパッケージの名前です)している:これはJavaでいた場合

[{"id":"HomePDA"},{"id":"House2"},{"id":"House"},{"id":"7c587a4b-851d-4aa7-a61f-dfdae8842298","value":"xxxxxxxxxxx"},{"id":"Home"}] 

、私は「foreachの」構造を使用してこの問題を解決することができますが、私は見つけることができませんその構造に似た何か。私はこの配列からJSONObjectsを取得する必要があります。

データの構造を変更する必要はありますか?私は最初のオプションを好む、第2のものはちょっと混乱している。

ありがとうございます。このような

答えて

2

何かが行う必要があります。

val objects = (0 until jsonArray.length).map(jsonArray.getJSONObject) 
+0

「オブジェクト」はどのようなデータ構造ですか?どうすればそのオブジェクトから「値」項目を取得できますか? – CallMeDeftsu4

+0

objectsはJSONObjectのリストです。私はあなたが "価値のアイテム"を意味するかどうかはわかりません。 – Dima

0

は、私がデータを抽出するために役立つクラスHouseをご紹介します。

import org.json._ 
import scala.util.{Try, Success, Failure} 

case class House(id: String, value: String) 

val jsonArray = new JSONArray("""[ 
{"id":"HomePDA"}, 
{"id":"House2"}, 
{"id":"House"}, 
{"id":"7c587a4b-851d-4aa7-a61f-dfdae8842298", "value":"xxxxxxxxxxx"}, 
{"id":"Home"}]""") 

val objects = (0 until jsonArray.length).map(jsonArray.getJSONObject) 

val houses = objects.map(s => Try(House(s.getString("id"), s.getString("value")))) 

houses.foreach { 
    case Success(house) => println(house.value) 
    case Failure(exception) => Console.err.println(s"Error: $exception") 
} 
関連する問題