2017-07-31 57 views
0

我對Scala語言非常陌生,所以我需要一些幫助。在Scala中迭代JSONArray

我有這個JSONArray(org.json是軟件包的名稱):

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

如果這是在Java中,我可以使用「的foreach」結構解決這個問題,但是我無法找到類似於該結構的東西。我只需要從這個數組中獲取JSONObjects。

這是可能的還是我需要改變數據結構?我更喜歡第一種選擇,第二種選擇有點混亂。

預先感謝您。

回答

2

像這樣的東西應該做的:

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

什麼樣的數據結構是「對象」?我現在如何獲得該對象的「價值」項目? – CallMeDeftsu4

+0

對象是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") 
}