/ / त्वरित रूप से json से नेस्टेड शब्दकोशों / सरणियों का उपयोग नहीं कर सकते - ios, json, स्विफ्ट, xcode, शब्दकोश

जेसन से स्विफ्ट के साथ नेस्टेड डिक्शनरी / एरेज़ तक नहीं पहुंच सकते - आईओएस, जेसन, स्विफ्ट, एक्सकोड, डिक्शनरी

मैं ["ऊपरी श्रेणी"] ["प्रथम श्रेणी"] [०] [०] स्थानीय जोंस फ़ाइल तक पहुँचने का प्रयास कर रहा हूँ

{
"upper category": {
"first category": [
[
"this is a question",
"this is an answer",
"this is the rank"
],
[
"this is a question2",
"this is an answer2",
"this is the rank2"
]
],
"second category": [
[
"this is a question3",
"this is an answer3",
"this is the rank3"
]
]
}
}

साथ में

let path = Bundle.main.path(forResource: "data", ofType: "json")
do {let data:NSData = try NSData(contentsOfFile: path!)
let json = try? JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

मैं पहले शब्दकोश से परे कुछ भी उपयोग करने में सक्षम नहीं हूं।

मैंने कई बार विकल्पों के साथ प्रयास किया (जैसे मैंने कई पुराने समाधानों की कोशिश की, लेकिन वे मेरे लिए काम नहीं करते हैं, शायद स्विफ्ट 3)

    if let description = ((((json?["upper category"] as? AnyObject)?["first category"] as? AnyObject)?[0] as? AnyObject)?[0] as? String) {

यह एक नॉब प्रश्न है, मैं आईओएस के लिए नया हूं। हालांकि किसी भी उत्तर में यह बताने की बहुत सराहना की गई कि अन्य प्रकार के नेस्टेड प्रकारों के लिए कोड कैसे लिखना सबसे अच्छा होगा

(xcode 8, स्विफ्ट 3)

उत्तर:

जवाब के लिए 2 № 1

यह थोड़ा अधिक है, लेकिन आप को जस का तस कर सकते हैं [String:[String:[[String]]]]

let json = try? JSONSerialization.jsonObject(...) as? [String:[String:[[String]]]]

अन्यथा, यदि उदाहरण के लिए, शब्दकोश में एक नेस्टेड डिक्शनरी के अलावा अन्य तत्व शामिल हैं, तो आपको सिर्फ शीर्ष स्तर के डिक्शनरी में लाना होगा [String:Any] और नेस्टेड तत्वों को व्यक्तिगत रूप से डाला।

if let json = try? JSONSerialization.jsonObject(...) as? [String:Any] {

let foo = json["foo"] as? Int
let bar = json["bar"] as? [String:Any]

...
}