Avatar ·

json.Unmarshal बनाम json.NewDecoder.Decode: Go में क्या अंतर है?

सभी को नमस्ते! मैं Go में नौसिखिया हूँ और JSON पार्सिंग को समझने की कोशिश कर रहा हूँ। मैं देख रहा हूँ कि स्टैंडर्ड लाइब्रेरी में दो तरीके हैं: `json.Unmarshal` और `json.NewDecoder().Decode()`। दोनों एक ही काम करते प्रतीत होते हैं — JSON को Go डेटा स्ट्रक्चर में बदलना। लेकिन मुझे समझ नहीं आ रहा कि कब किसका उपयोग करूँ। उदाहरण के लिए, मेरे पास यह कोड है: ```go type User struct { Name string `json:"name"` Age int `json:"age"` } // तरीका 1 data := `{"name":"Alice","age":30}` var user1 User err := json.Unmarshal([]byte(data), &user1) // तरीका 2 reader := strings.NewReader(data) var user2 User err = json.NewDecoder(reader).Decode(&user2) ``` दोनों विकल्प एक जैसे काम करते हैं। लेकिन मैंने सुना है कि `Decoder` स्ट्रीम के लिए बेहतर है, और `Unmarshal` छोटे डेटा के लिए। असली अंतर क्या है? क्या प्रदर्शन में कोई अंतर है? कब एक विधि को दूसरे के बजाय चुनना चाहिए? और अगर JSON बहुत बड़ा है (जैसे, 100 MB) तो क्या होगा? कृपया समझने में मदद करें, क्योंकि डॉक्यूमेंटेशन में स्पष्ट रूप से नहीं लिखा है।