2016-09-15 21 views
8

के साथ JSONSerialization मुझे स्विफ्ट 3 के साथ सरल JSON क्रमबद्धता सिद्धांतों को समझने में एक समय का भालू है। क्या मुझे वेबसाइट से जेएसओएन को एक सरणी में डीकोड करने में कुछ मदद मिल सकती है, इसलिए मैं इसे jsonResult["team1"]["a"] आदि के रूप में एक्सेस कर सकता हूं? यहाँ प्रासंगिक कोड है:स्विफ्ट 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() 

भेजे JSON है:

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

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

धन्यवाद

उत्तर

10

स्विफ्ट 3 में, JSONSerialization.jsonObject(with:options:) की वापसी प्रकार Any बन गया है।

(आप इसे अपने Xcode के त्वरित सहायता फलक में जाँच कर सकते हैं, jsonResult पर ओर इशारा करते हुए के साथ।)

और तुम चर Any के रूप में आपके द्वारा लिखे गए किसी भी तरीके या सबस्क्रिप्ट फोन नहीं कर सकते हैं। आपको Any के साथ काम करने के लिए स्पष्ट प्रकार रूपांतरण की आवश्यकता है।

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

और NSArray के डिफ़ॉल्ट तत्व प्रकार, NSDictionary का डिफ़ॉल्ट मान प्रकार भी Any बन गए हैं। (इन सभी चीजों को बस "आईडी-ए-ए-ए", SE-0116 कहा जाता है।)

तो, यदि आप जेएसओएन संरचना में गहरी जाना चाहते हैं, तो आपको कुछ अन्य स्पष्ट प्रकार के रूपांतरण की आवश्यकता हो सकती है।

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

धन्यवाद। ओओपीर की जानकारी में मदद मिली। लेकिन, वास्तव में मेरी जेसन को दोबारा सुधारने में क्या मदद मिली:

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