2016-11-07 11 views
0

Ich weiß, dass es schon viele Themen gibt, aber ich habe alles versucht und bekomme immer noch einen Fehler.JSON mit Swift 3

Im dies zu tun:

let url = URL(string: "XXXXXXX") 

     let jsonRequest = URLSession.shared.dataTask(with: url!){ (data, response, error) in 

      if error != nil { 

       print(error) 

      } else { 

       if let urlContent = data { 

        do { 

         let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSMutableArray 

         let responseMessage = (jsonResult[0] as AnyObject)["name"]! as? String 

         print(responseMessage) 

        } catch { 

         print("JSON Processing Failed") 
        } 
       } 
      } 
     } 
     jsonRequest.resume() 

Das ist meine Json:

[{ 
    "name": "Andrew", 
    "id": "0", 
}, { 
    "name": "Jack", 
    "id": "1", 
}] 

Ich kann ohne Probleme die Andrew Namen drucken, aber gibt es einen besseren Weg, dies zu tun? Alle diese Schauspieler scheinen nicht richtig für mich zu sein.

Antwort

1

Ich würde idealerweise eher schnelle spezifische Art Gießen mit weniger Kraft auspacken, wenn möglich. So würde ich es gerne verwenden:

let url = URL(string: "xxxx") 

let jsonRequest = URLSession.shared.dataTask(with: url!){ (data, response, error) in 
    if error != nil { 
     print(error) 
    } else { 
     guard let data = data else { 
      return 
     } 
     do { 
      if let jsonResult = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as? [[String: AnyObject]] { 
       let responseMessage = jsonResult[0]["name"] as? String 
       print(responseMessage) 
      }   
     } catch { 
      print("JSON Processing Failed") 
     } 
    } 
} 
jsonRequest.resume() 
+0

Das ist, was ich wollte! Ich habe viele Dinge ausprobiert, aber ich habe immer Fehler bekommen. Vielen Dank Abhra. – Adrian