Swift Academy · पाठ

JSONDecoder से डिकोडिंग

JSON डेटा को टाइप किए गए Swift मानों में पार्स कीजिए।

पाठ 3, कुल 4 में से13 चरण

JSONDecoder से डिकोडिंग, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

JSONDecoder बनाना

JSONDecoder JSON Data से Swift मान को फिर से बनाता है। आप उसे बताते हैं कि कौन-सा प्रकार तैयार करना है और उसे बाइट्स देते हैं।

import Foundation

struct City: Codable {
    var name: String
    var population: Int
}

let json = "{\"name\":\"Oslo\",\"population\":700000}"
let data = json.data(using: .utf8)!
let city = try JSONDecoder().decode(City.self, from: data)
print(city.name, city.population)

.self के साथ प्रकार देना

पहला आर्ग्युमेंट मेटाटाइप होता है — इसे MyType.self के रूप में लिखा जाता है। इससे Decoder को पता चलता है कि डेटा से कौन-सी संरचना बनानी है।

import Foundation

struct Flag: Codable { var ok: Bool }

let data = "{\"ok\":true}".data(using: .utf8)!
let result = try JSONDecoder().decode(Flag.self, from: data)
print(result.ok)

सारणियों को डिकोड करना

JSON सारणी को डिकोड करने के लिए [Int].self या [MyStruct].self जैसे किसी सारणी प्रकार का अनुरोध करें।

import Foundation

let json = "[10, 20, 30]"
let data = json.data(using: .utf8)!
let numbers = try JSONDecoder().decode([Int].self, from: data)
print(numbers.reduce(0, +))

नेस्टेड ऑब्जेक्ट को डिकोड करना

नेस्टेड JSON ऑब्जेक्ट नेस्टेड Codable स्ट्रक्चर में बदल जाते हैं। Decoder ट्री की प्रत्येक शाखा पर चलता है और हर स्तर को आपके लिए भर देता है।

import Foundation

struct Coord: Codable { var lat: Double; var lon: Double }
struct Place: Codable { var name: String; var coord: Coord }

let json = "{\"name\":\"X\",\"coord\":{\"lat\":1.0,\"lon\":2.0}}"
let p = try JSONDecoder().decode(Place.self, from: json.data(using: .utf8)!)
print(p.coord.lat, p.coord.lon)

डिकोडिंग त्रुटियों को पकड़ना

जब डेटा प्रकार से मेल नहीं खाता, तो decode त्रुटि उत्पन्न करता है। विकृत डेटा को सही ढंग से सँभालने के लिए इसे do/catch में रखें।

import Foundation

struct User: Codable { var name: String }

let bad = "{\"wrong\":1}".data(using: .utf8)!
do {
    let u = try JSONDecoder().decode(User.self, from: bad)
    print(u.name)
} catch {
    print("Failed:", error)
}

keyNotFound त्रुटियाँ

एक सामान्य विफलता DecodingError.keyNotFound है, जो किसी आवश्यक कुंजी के गायब होने पर उत्पन्न होती है। क्या गलत हुआ, यह ठीक-ठीक बताने के लिए त्रुटि का पैटर्न-मिलान करें।

import Foundation

struct User: Codable { var name: String }

let bad = "{}".data(using: .utf8)!
do {
    _ = try JSONDecoder().decode(User.self, from: bad)
} catch let DecodingError.keyNotFound(key, _) {
    print("Missing key:", key.stringValue)
} catch {
    print("Other error:", error)
}

typeMismatch त्रुटियाँ

यदि किसी मान का JSON प्रकार गलत हो — जैसे जहाँ Int अपेक्षित हो वहाँ स्ट्रिंग हो — तो Decoder DecodingError.typeMismatch उत्पन्न करता है।

import Foundation

struct Count: Codable { var n: Int }

let bad = "{\"n\":\"oops\"}".data(using: .utf8)!
do {
    _ = try JSONDecoder().decode(Count.self, from: bad)
} catch let DecodingError.typeMismatch(type, _) {
    print("Type mismatch, expected:", type)
} catch {
    print("Other:", error)
}

dataCorrupted त्रुटियाँ

अमान्य JSON सिंटैक्स से DecodingError.dataCorrupted उत्पन्न होता है। आम तौर पर इसका अर्थ है कि बाइट्स बिल्कुल मान्य JSON नहीं हैं।

import Foundation

struct User: Codable { var name: String }

let bad = "not json".data(using: .utf8)!
do {
    _ = try JSONDecoder().decode(User.self, from: bad)
} catch is DecodingError {
    print("Decoding failed: data corrupted")
} catch {
    print("Other:", error)
}

वैकल्पिक मानों में डिकोड करना

यदि कोई प्रॉपर्टी वैकल्पिक है, तो गायब कुंजी बिना त्रुटि उत्पन्न किए nil में डिकोड हो जाती है। इससे वैकल्पिक फ़ील्ड अनुपस्थित डेटा को सहन कर पाते हैं।

import Foundation

struct Profile: Codable {
    var name: String
    var bio: String?
}

let json = "{\"name\":\"Kai\"}"
let p = try JSONDecoder().decode(Profile.self, from: json.data(using: .utf8)!)
print(p.name, p.bio ?? "no bio")

Decoder का दोबारा उपयोग करना

Encoder की तरह, कॉन्फ़िगर किए गए JSONDecoder का कई पेलोड के लिए दोबारा उपयोग किया जा सकता है। एक इंस्टेंस रखें और उससे अलग-अलग डेटा डिकोड करें।

import Foundation

struct Word: Codable { var text: String }

let decoder = JSONDecoder()
let inputs = ["{\"text\":\"hi\"}", "{\"text\":\"bye\"}"]
for s in inputs {
    let w = try decoder.decode(Word.self, from: s.data(using: .utf8)!)
    print(w.text)
}

डिकोड करें, जाँचें, उपयोग करें

पूरी प्रक्रिया यह है: Data प्राप्त करें, do/catch के भीतर उसे प्रकारयुक्त मान में डिकोड करें, और फिर उस सुस्पष्ट प्रकार वाले परिणाम का सुरक्षित रूप से उपयोग करें।

import Foundation

struct Weather: Codable {
    var city: String
    var temp: Double
}

let json = "{\"city\":\"Rome\",\"temp\":21.5}"
do {
    let w = try JSONDecoder().decode(Weather.self, from: json.data(using: .utf8)!)
    print("\(w.city): \(w.temp)C")
} catch {
    print("Decode error:", error)
}

त्वरित जाँच: JSONDecoder

डिकोडिंग के अपने ज्ञान का परीक्षण करें।

पुनरावलोकन: JSONDecoder से डिकोडिंग

आपने JSON से Swift मानों को फिर से बनाना सीखा:

  • decode(MyType.self, from: data) एक प्रकारयुक्त मान तैयार करता है।
  • सारणियाँ, नेस्टेड ऑब्जेक्ट और वैकल्पिक मान अपने-आप डिकोड हो जाते हैं।
  • decode DecodingError की स्थितियाँ उत्पन्न करता है: keyNotFound, typeMismatch, dataCorrupted, valueNotFound।
  • विकृत डेटा को सँभालने के लिए कॉल को do/catch में रखें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “JSONDecoder से डिकोडिंग” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “JSONDecoder से डिकोडिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“JSONDecoder से डिकोडिंग” में मैं क्या सीखूँगा?

JSON डेटा को टाइप किए गए Swift मानों में पार्स कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“JSONDecoder से डिकोडिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Codable के अनुरूप बनाना
  2. JSONEncoder से एन्कोडिंग
  3. JSONDecoder से डिकोडिंग
  4. ऑप्शनल और नेस्टेड प्रकार सँभालना
← Swift Academy पर वापस जाएँ