2016-05-13 10 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

私は実際にあなたのための答えはありませんが、最近私はJSONを解析する方法についてJohn Sundellの素晴らしい話を見てきました。うまくいけばいいです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"はありますが、どのように各数値キーの値を取得できますか? 6524612、 ... "時刻":今では '{ "ID" ような値をとる{ は、 "開始": "18:50"、 "終了": "午後07時20分" } ... }、 しかし、私はこのID、時間などにアクセスする必要があります。 – Daryushka

+0

forループの(key、value)のキーから値を取得できます – ebearden

関連する問題