2016-05-13 79 views
0

我有一個複雜的JSON數據。 如何解析這些數據? 我試過了,但它不起作用。從複雜的JSON中快速獲取數據

我需要帶有對象(id,time ...)的字典。但如何通過「1,..」? 我該如何花時間開始和結束?

"data": { 

"1":[ 
    {"id":6524612, 
    ... 
    "time":{ 
    "begin":"18:50", 
    "end":"19:20" 
    }, 
    ... 
    }, 

"2":[ 
    { 
    "id":6524613, 
    ... 
    "time":{ 
    "begin":"18:50", 
    "end":"19:20" 
    }, 
    ... 
    }, 

我的錯誤在哪裏?

let broadcastTask = broadcastSession.dataTaskWithRequest(broadcastRequest) { (data, response, error) -> Void in 

     if error != nil { 
      print(error.debugDescription) 
     } else { 
      do { 
       let broadcastDict = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as? Dictionary<String, AnyObject> 
        if let results = broadcastDict!["data"] as? [Dictionary<String, AnyObject>] { 

         for obj in results { 
          let broadcast = Broadcast(broadcastDict: obj) 
          self.broadcastList.append(broadcast) 
         } 


         //Main UI thread 
         dispatch_async(dispatch_get_main_queue()) { 
          self.collectionView.reloadData() 
         } 
        } 

       } catch { 

      } 

     } 

    } 

    broadcastTask.resume() 

init(broadcastDict: Dictionary<String, AnyObject>) { 

     if let category = broadcastDict["id"] as? Int { 
      self.id = id 
     } 
... 
} 
+0

我其實沒有給你答案,但最近我看了John Sundell關於如何解析JSON的一個很好的演講。希望它有助於https://vimeo.com/165920052 –

+0

確定合適的JSON結構是非常不可能的,因爲它的碎片太多了。 – vadian

回答

1

如果我理解正確的問題是: 第一個問題似乎是,你想投的「數據」字典詞典的數組。這將總是失敗,因爲你的數據對象是一個字典而不是一個數組。

一旦你糾正了這個問題,你的循環會遇到麻煩。試試這個:

for (key, value) in results { 
    let broadcast = Broadcast(broadcastDict: value) 
    self.broadcastList.append(broadcast) 
} 

現在您發送您Broadcast對象期待的字典。

+0

是的,謝謝!但是有一個關鍵的「1」,「2」,我怎樣才能得到每個數字鍵的值?現在只需要像 值'{ 「ID」:6524612, ... 「時間」:{ 「開始」: 「18:50」, 「結束」: 「19:20」 }, ... },' 但我需要訪問此ID,時間等。 – Daryushka

+0

您可以從for循環中的鍵(key,value)中的鍵中獲取值 – ebearden