2016-09-15 25 views
8

Swift 3 ile basit JSON serileştirme prensiplerini anlayan bir zaman ayıyorum. Bir web sitesinden JSON kodunu çözme konusunda yardım alabilir miyim? Bu yüzden jsonResult["team1"]["a"] vb. İlgili kod geçerli:Swift ile JSONSerialization 3

let httprequest = URLSession.shared.dataTask(with: myurl){ (data, response, error) in 

self.label.text = "RESULT" 

    if error != nil { 

     print(error) 

    } else { 

     if let urlContent = data { 

      do { 

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

       print(jsonResult) //this part works fine 

       print(jsonResult["team1"]) 

       } catch { 

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

gelen JSON geçerli:

{ 
team1 = { 
    a = 1; 
    b = 2; 
    c = red; 
}; 

team2 = { 
    a = 1; 
    b = 2; 
    c = yellow; 
}; 
team3 = { 
    a = 1; 
    b = 2; 
    c = green; 
}; 
} 

Teşekkür Swift 3'te

cevap

10

, JSONSerialization.jsonObject(with:options:) dönüş tipi Any haline gelmiştir.

(Sen. jsonResult üzerine bakacak şekilde, sizin Xcode Hızlı Yardım bölmesinde kontrol edebilirsiniz)

Ve Any olarak yazılan değişken için herhangi yöntemleri veya alt simgeler diyemezsin. Any ile çalışmak için açık bir tür dönüşüme ihtiyacınız var.

if let jsonResult = jsonResult as? [String: Any] { 
     print(jsonResult["team1"]) 
    } 

Ve NSArray varsayılan Eleman tipi, NSDictionary varsayılan değer türü de Any haline gelmiştir. (Tüm bu şeyler basitçe "id-as-Any", SE-0116 olarak adlandırılır.)

Böylece, daha ayrıntılı bir JSON yapısına geçmek isterseniz, başka bir açık tür dönüşümüne ihtiyacınız olabilir.

 if let team1 = jsonResult["team1"] as? [String: Any] { 
      print(team1["a"]) 
      print(team1["b"]) 
      print(team1["c"]) 
     } 
0

Teşekkür ederiz. OOPer'in bilgileri yardımcı oldu. Ancak, gerçekten yardımcı olan şey benim jsonumun yeniden biçimlendirilmesiydi:

{ "teams": [ { "a": 1, "b": 2, "c": "red" }, { "a": 1, "b": 2, "c": "yellow" }, { "a": 1, "b": 2, "c": "green" } ] }