मैंने देखा है कि जबकि Quicktype.io JSON को SWIFT में पार्स करने का बहुत अच्छा काम करता है, कभी-कभी यह बहुत सारे सहायक कार्यों और विधियों का सहारा लेता है। निम्नलिखित के लिए, इसने लगभग 15 अतिरिक्त विधियाँ उत्पन्न कीं। इनमें से कुछ परिचित हैं जैसे NSNull, हालांकि, दो मेरे लिए अपरिचित हैं जैसे JSONAny और ऐसा लगता है कि उनके आसपास एक रास्ता होना चाहिए। उदाहरण के लिए JSONAny वर्ग में लगभग 12 कार्य हैं और इसका उपयोग केवल एक फ़ील्ड को पार्स करने के लिए किया जाता है जो मेरे लिए उतना महत्वपूर्ण नहीं है।
यहाँ JSON कैसा दिखता है:
[{"name":"Afghanistan","topLevelDomain":[".af"],"alpha2Code":"AF","alpha3Code":"AFG","callingCodes":["93"],"capital":"Kabul","altSpellings":["AF","Afġānistān"],"region":"Asia","subregion":"Southern Asia","population":27657145,"latlng":[33.0,65.0],"demonym":"Afghan","area":652230.0,"gini":27.8,"timezones":["UTC+04:30"],"borders":["IRN","PAK","TKM","UZB","TJK","CHN"],"nativeName":"افغانستان","numericCode":"004","currencies":[{"code":"AFN","name":"Afghan afghani","symbol":"؋"}],"languages":[{"iso639_1":"ps","iso639_2":"pus","name":"Pashto","nativeName":"پښتو"},{"iso639_1":"uz","iso639_2":"uzb","name":"Uzbek","nativeName":"Oʻzbek"},{"iso639_1":"tk","iso639_2":"tuk","name":"Turkmen","nativeName":"Türkmen"}],"translations":{"de":"Afghanistan","es":"Afganistán","fr":"Afghanistan","ja":"アフガニスタン","it":"Afghanistan","br":"Afeganistão","pt":"Afeganistão","nl":"Afghanistan","hr":"Afganistan","fa":"افغانستان"},"flag":"https://restcountries.eu/data/afg.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"AFG"}]
मैं सभी कोड नहीं दूंगा कि वह संरचना मुख्य संरचना से एक स्तर नीचे है:
struct CountryReturnedElement: Codable {
//...various fields
let regionalBlocs: [RegionalBloc]
}
// MARK: - RegionalBloc
struct RegionalBloc: Codable {
let acronym, name: String
let otherAcronyms, otherNames: [JSONAny]
}
जिसे केवल निम्नलिखित JSON को डीकोड करने के लिए डिज़ाइन किया गया है:
"regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}]
वस्तुतः पंद्रह कार्यों और विधियों के साथ सहायक कक्षाओं का सहारा लिए बिना उपरोक्त को पार्स करने का कोई आसान तरीका है। मुझे पूरी संभावना है, अन्य शब्दकोष और अन्य नाम तार हैं इसलिए मुझे लगता है कि मैं [स्ट्रिंग?] जा सकता हूं। हालांकि, मुझे लगता है कि मुझे नहीं पता कि 100% निश्चितता के साथ, 95% निश्चितता की तरह।
किसी भी सुझाव के लिए धन्यवाद।
1 उत्तर
यदि आप सुनिश्चित हैं कि otherAcronyms
और otherNames
कुंजियाँ [String?]
वापस आती हैं, तो आप RegionalBloc
संरचना को [String?]
स्वीकार करने के लिए संशोधित कर सकते हैं।
struct RegionalBloc: Codable {
let acronym, name: String
let otherAcronyms, otherNames: [String?]
}
आप बस इसे आज़मा सकते हैं और यदि JSONDecoder
कोई त्रुटि नहीं देता है तो आप अच्छे हैं और [String?]
के साथ जारी रख सकते हैं। अन्यथा, आप त्रुटि की जांच कर सकते हैं और आने वाले प्रकार की जांच करने और इसे सेट करने के लिए इसे कंसोल पर प्रिंट कर सकते हैं।
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
ios
iOS, Apple iPhone, iPod टच और iPad पर चलने वाला मोबाइल ऑपरेटिंग सिस्टम है। IOS प्लेटफॉर्म पर प्रोग्रामिंग से संबंधित प्रश्नों के लिए इस टैग [ios] का उपयोग करें। उन प्रोग्रामिंग भाषाओं के लिए विशिष्ट मुद्दों के लिए संबंधित टैग [उद्देश्य-सी] और [स्विफ्ट] का उपयोग करें।