2017-01-05 14 views
0

私は数日後に次のjsonファイルから「名前」を取得しようとしています。誰も私を正しい方向に導くことができますか?結果配列にはアクセスできましたが、 "名前"変数にはアクセスできませんでした。 スウィフト3を使ってparson jsonが私のために働いていない

{ 
    "count": 7, 
    "next": null, 
    "previous": null, 
    "results": [ 
    { 
    "id": 10, 
    "name": "Abs" 
    }, 
    { 
    "id": 8, 
    "name": "Arms" 
    }, 
    { 
    "id": 12, 
    "name": "Back" 
    }, 
    { 
    "id": 14, 
    "name": "Calves" 
    }, 
    { 
    "id": 11, 
    "name": "Chest" 
    }, 
    { 
    "id": 9, 
    "name": "Legs" 
    }, 
    { 
    "id": 13, 
    "name": "Shoulders" 
    } 
    ] 
} 

と私のコードは、問題は、あなたが Dictionaryから nameキャストされている。この

let url = URL(string: "https://wger.de/api/v2/exercisecategory")! 

    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in 
     if error != nil { 
      print(error!) 
     } else { 
      if let content = data { 

       do { 
        let json = try? JSONSerialization.jsonObject(with: content, options:[]) { 
         if let content = json as? [String: Any] { 
          if let results = content["results"] as? [Any] { 
           for result in results { 
            if let bodypart = result["name"] as! [String: Any] { 
             print(bodypart) 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 

答えて

0

のように見えますが、それはあなたの代わりにAnyの配列の辞書の配列にresults配列をキャストする必要があり、単にStringです。だから、全体のコードは同じようになります。

if let json = try? JSONSerialization.jsonObject(with: content, options:[]), 
    let content = json as? [String: Any], 
    let results = content["results"] as? [[String:Any]] { 
     for result in results { 
      if let bodypart = result["name"] as? String { 
       print(bodypart) 
      } 
     } 
} 
+0

ありがとうございました – Niklas

+0

@Niklas Welcome mate :) –

関連する問題