JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) एक अत्यधिक बहुमुखी और व्यापक रूप से लोकप्रिय डेटा प्रारूप है। यह अक्सर वेब ऐप्स के बीच संचार के लिए और बड़ी मात्रा में संरचित एप्लिकेशन डेटा को स्टोर करने के सुविधाजनक तरीके के रूप में भी उपयोग किया जाता है।

JSON इतना उपयोगी है कि लगभग सभी आधुनिक प्रोग्रामिंग लैंग्वेज इसके साथ काम करने के लिए बिल्ट-इन सपोर्ट प्रदान करती हैं, जिसमें गो भी शामिल है।

गो में JSON के साथ कार्य करना

आप JSON के साथ किए जाने वाले अधिकांश कार्य को दो सामान्य श्रेणियों में विभाजित कर सकते हैं: मार्शलिंग और अनमरशालिंग। विकिपीडिया मार्शलिंग को परिभाषित करता है:

कंप्यूटर विज्ञान में, मार्शलिंग किसी वस्तु के मेमोरी प्रतिनिधित्व को भंडारण या संचरण के लिए उपयुक्त डेटा प्रारूप में बदलने की प्रक्रिया है। यह आमतौर पर तब उपयोग किया जाता है जब डेटा को कंप्यूटर प्रोग्राम के विभिन्न भागों के बीच या एक प्रोग्राम से दूसरे प्रोग्राम में स्थानांतरित किया जाना चाहिए।

सरल शब्दों में, मार्शलिंग एक चर में संग्रहीत डेटा को एक ऐसे रूप में परिवर्तित करने की प्रक्रिया है जो किसी अन्य प्रोग्राम को पास करना आसान हो। Unmarshaling रिवर्स प्रक्रिया है: इसमें परिवहन के लिए स्वरूपित डेटा लेना और इसे ऐसे रूप में परिवर्तित करना शामिल है जो आपके प्रोग्राम के उपयोग में आसान हो।

instagram viewer

गो का उपयोग करके, आप मूल डेटा संरचनाओं को JSON में मार्शल कर सकते हैं। और आप रिवर्स एक्शन कर सकते हैं, JSON डेटा को गो वेरिएबल्स में अनमर्सलिंग कर सकते हैं।

गो में JSON के लिए मार्शलिंग

गो प्रदान करता है एन्कोडिंग/जेसन पैकेज आपके लिए JSON के साथ काम करना आसान बनाने के लिए। इस पैकेज में कई कार्य शामिल हैं, लेकिन आप मार्शलिंग के लिए जिस एक का उपयोग करेंगे, वह है मार्शल समारोह। मार्शल निम्नलिखित फ़ंक्शन हस्ताक्षर हैं:

फंक मार्शल (वी इंटरफेस{}) ([] बाइट, त्रुटि)

इस का मतलब है कि मार्शल किसी भी डेटा प्रकार के पैरामीटर को स्वीकार करता है, और दो मान लौटाता है: बाइट्स का एक टुकड़ा और एक त्रुटि। दूसरे शब्दों में, आप कॉल करें मार्शल गो मान के साथ, और यह इसे JSON में परिवर्तित करता है और JSON समतुल्य लौटाता है। यदि यह रूपांतरण प्रक्रिया के दौरान किसी त्रुटि का सामना करता है, तो यह त्रुटि और एक खाली टुकड़ा लौटाएगा।

यहां एक कोड उदाहरण दिया गया है जो उपयोग करता है मार्शल मानचित्र को JSON में बदलने के लिए। इस उदाहरण को चलाने के लिए, आपको केवल एक गो फ़ाइल बनाने की आवश्यकता है आपका पसंदीदा कोड संपादक, या उपयोग करें खेल के मैदान जाओ:

पैकेट मुख्य

आयात (
"एन्कोडिंग/json"
"fmt"
)

समारोह मुख्य(){
वैल: = नक्शा [स्ट्रिंग]int यहाँ{
"जॉन": 25,
"मेरी": 19,
"एडम": 5,
}

रेस, _ := json. मार्शल (वैल)
fmt.प्रिंट(डोरी(आर ई))
}

यदि आप वह कोड चलाते हैं, तो यह निम्न आउटपुट करेगा:

जैसा कि पहले उल्लेख किया गया है, आप किसी भी प्रकार के गो डेटा को JSON में मार्शल कर सकते हैं, हालांकि वास्तविक जीवन में आप आमतौर पर स्ट्रक्चर्स को मार्शल करेंगे। इस वजह से, गो आपको देने के लिए स्ट्रक्चर टैग नामक सुविधा प्रदान करता है मार्शल अपनी संरचना को परिवर्तित करने के लिए अतिरिक्त निर्देश।

एक स्ट्रक्चर टैग एक स्ट्रिंग है जिसे आप किसी फ़ील्ड के डेटा प्रकार के बगल में अपनी संरचना घोषणा में शामिल करते हैं। संरचना टैग आपको रास्ता समायोजित करने देते हैं मार्शल टैग जिस क्षेत्र से संबंधित है, उसका इलाज करता है। आप JSON आउटपुट में किसी फ़ील्ड का नाम बदलने के लिए स्ट्रक्चर टैग का उपयोग कर सकते हैं, या इसे पूरी तरह से छोड़ भी सकते हैं। संरचना टैग (वह मार्शल पहचानता है) सबस्ट्रिंग "जेसन:" से शुरू करें।

उदाहरण के तौर पर, कहें कि आपके पास एक संरचना है कार जो एक कार के बारे में कुछ जानकारी का प्रतिनिधित्व करता है। यहाँ एक बनाने के लिए कोड है कार और इसे JSON पर मार्शल करें:

पैकेट मुख्य

आयात (
"एन्कोडिंग/json"
"fmt"
)

समारोह मुख्य(){
प्रकार कार संरचना {
ब्रांड स्ट्रिंग
मॉडल स्ट्रिंग
कीमत int यहाँ
}
वैल := कार {ब्रांड: "मर्सिडीज", नमूना: "बेंज", कीमत: 50000}
रेस, _ := json. मार्शल (वैल)
fmt.प्रिंट(डोरी(आर ई))
}

यह कोड आउटपुट उत्पन्न करता है:

ब्रैंड, नमूना, और कीमत के क्षेत्र कार अपरकेस अक्षरों से शुरू करने की आवश्यकता है, या मार्शल उन्हें रूपांतरित नहीं कर पाएंगे। इसका परिणाम JSON आउटपुट फ़ील्ड में अपरकेस से भी शुरू होता है। लेकिन क्या होगा यदि आप चाहते हैं कि नाम JSON में लोअरकेस से शुरू हो, या यदि आप पूरी तरह से फ़ील्ड का नाम बदलना चाहते हैं? यहीं पर स्ट्रक्चर टैग आते हैं। यहाँ एक उदाहरण है:

पैकेट मुख्य
आयात (
"एन्कोडिंग/json"
"fmt"
)
समारोह मुख्य(){
प्रकार कार संरचना {
आईडी इंट `जेसन:"-"`
ब्रांड स्ट्रिंग `json:"प्रकार"`
मॉडल स्ट्रिंग `जेसन:"नमूना"`
मूल्य int `json:"कीमत"`
}
वैल := कार{आईडी: 0, ब्रांड: "मर्सिडीज", नमूना: "बेंज", कीमत: 50000}
रेस, _ := json. मार्शल (वैल)
fmt.प्रिंट(डोरी(आर ई))
}

यह कोड एक नया आईडी फ़ील्ड पेश करता है जो मार्शल जेएसओएन आउटपुट से एक स्ट्रक्चर टैग के माध्यम से छोड़ देता है। कोड अन्य स्ट्रक्चर फ़ील्ड का नाम बदलने के लिए स्ट्रक्चर टैग का भी उपयोग करता है। यहाँ प्रोग्राम आउटपुट है:

जैसा कि आप देख सकते हैं, "json:" के बाद स्ट्रक्चर टैग का हिस्सा मार्शल के आउटपुट में फ़ील्ड का नाम बन जाता है। एक अपवाद है: यदि यह स्ट्रिंग "-" है, तो मार्शल उस फ़ील्ड को आउटपुट से छोड़ देता है। आप मार्शल और स्ट्रक्चर टैग के बारे में अधिक पढ़ सकते हैं दस्तावेज जाओ.

गो में JSON से अनमर्शलिंग

एन्कोडिंग/जेसन पैकेज एक अनमर्सलिंग फ़ंक्शन भी प्रदान करता है, जिसे कहा जाता है अनमार्शल. इसमें निम्नलिखित फ़ंक्शन हस्ताक्षर हैं:

func Unmarshal (डेटा [] बाइट, v इंटरफेस{}) गलती

भिन्न मार्शल, अनमार्शल कोई मान वापस नहीं करता है। इसके बजाय, यह JSON को पहले तर्क में बाइट्स के एक स्लाइस के रूप में स्वीकार करता है और फिर परिवर्तित डेटा को इसके दूसरे तर्क द्वारा इंगित ऑब्जेक्ट में संग्रहीत करता है। अनमार्शल स्ट्रक्चर टैग के साथ भी काम करता है, लेकिन यहां, टैग बताते हैं अनमार्शल कौन से JSON फ़ील्ड किस स्ट्रक्चर फ़ील्ड से मेल खाते हैं।

किसी प्रोग्राम में अनमार्शलिंग करते समय, आप कर सकते हैं एक एपीआई से डेटा प्राप्त करें, लेकिन यहां आप डमी डेटा का उपयोग कर रहे होंगे। यहां बताया गया है कि आप कैसे उपयोग करते हैं अनमार्शल:

पैकेट मुख्य

आयात (
"एन्कोडिंग/json"
"fmt"
)

समारोह मुख्य(){
प्रकार कार संरचना {
आईडी इंट `जेसन:"-"`
ब्रांड स्ट्रिंग `json:"प्रकार"`
मॉडल स्ट्रिंग `जेसन:"नमूना"`
मूल्य int `json:"कीमत"`
}

जेसन इनपुट: = `{
"प्रकार": "टोयोटा",
"नमूना": "केमरी",
"कीमत": 2000
}`

वर jsonआउटपुट कार
त्रुटि: = json. अनमार्शल([]बाइट(jsonInput), और jsonOutput)

अगर गलती! = शून्य {
fmt. प्रिंटलन("JSON डिकोड त्रुटि!")
वापस करना
}

fmt.प्रिंट(jsonOutput)
}

यह कोड पिछले उदाहरण के समान कार प्रकार का उपयोग करता है, और यह JSON ऑब्जेक्ट को कार प्रकार की संरचना में अनमर्श करता है, फिर डेटा को संरचना में प्रिंट करता है। जब चलाया जाता है, तो प्रोग्राम इस आउटपुट का उत्पादन करता है:

इससे पता चलता है कि डमी JSON डेटा सफलतापूर्वक अनमार्शल किया गया था jsonOutput संरचना।

गो JSON के साथ काम करना आसान बनाता है

एन्कोडिंग/जेसन पैकेज के साथ, गो में JSON के साथ काम करना दो फ़ंक्शन कॉल जितना आसान है: मार्शललैंड अनमारशाल. गो आपको स्ट्रक्चर टैग के साथ मार्शलिंग/अनमर्शलिंग जेएसओएन की प्रक्रिया को अनुकूलित करने देता है।

डेटा को JSON में कनवर्ट करना इसे किसी अन्य प्रोग्राम या प्रक्रिया के साथ साझा करने का एक शानदार तरीका है। प्रारूप इतना सार्वभौमिक है कि JSON जितना पोर्टेबल हो सकता है।