C++ में JSON को कैसे पार्स करें?

How Parse Json C



इस ट्यूटोरियल का उद्देश्य JSON डेटा को समझना है और C++ में JSON डेटा को कैसे पार्स करना है। हम JSON डेटा, ऑब्जेक्ट, ऐरे, JSON सिंटैक्स पर चर्चा करेंगे, और फिर C++ में JSON डेटा के पार्सिंग तंत्र को समझने के लिए कई कामकाजी उदाहरणों से गुजरेंगे।

जेएसओएन क्या है?

JSON संरचित डेटा को व्यवस्थित तरीके से संग्रहीत और स्थानांतरित करने के लिए एक हल्का-वजन वाला टेक्स्ट-आधारित प्रतिनिधित्व है। JSON डेटा को ऑर्डर की गई सूचियों और की-वैल्यू पेयर के रूप में दर्शाया जाता है। JSON का मतलब है जे एवा एस क्रिप्ट या वस्तु एन जयजयकार। जैसा कि पूरा नाम इंगित करता है, यह जावास्क्रिप्ट से लिया गया है। हालाँकि, अधिकांश लोकप्रिय प्रोग्रामिंग भाषाओं में JSON डेटा समर्थित है।







इसका उपयोग अक्सर सर्वर से डेटा को वेब पेज पर स्थानांतरित करने के लिए किया जाता है। एक्सएमएल की तुलना में जेएसओएन में संरचित डेटा का प्रतिनिधित्व करना बहुत आसान और साफ है।



JSON सिंटैक्स नियम

यहाँ JSON सिंटैक्स नियम हैं:



  1. JSON डेटा हमेशा की-वैल्यू पेयर के रूप में होना चाहिए।
  2. JSON डेटा अल्पविराम द्वारा अलग किया जाता है।
  3. JSON ऑब्जेक्ट का प्रतिनिधित्व करने के लिए एक घुंघराले ब्रेस का उपयोग किया जाता है।
  4. JSON Array का प्रतिनिधित्व करने के लिए एक वर्गाकार ब्रैकेट का उपयोग किया जाता है।

JSON डेटा क्या है?

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





नाम: ड्रेक

यह साधारण JSON डेटा का एक उदाहरण है। यहां कुंजी नाम है और ड्रेक संबंधित मान है। कुंजी, यानी, नाम और मूल्य, यानी ड्रेक को एक कोलन द्वारा अलग किया जाता है।



JSON फ़ाइल एक्सटेंशन

JSON डेटा सामान्य रूप से फ़ाइल में .json के एक्सटेंशन के साथ संग्रहीत किया जाता है। उदाहरण के लिए, कर्मचारी के डेटा को स्टोर करने के लिए, आप फ़ाइल को 'employee.json' नाम दे सकते हैं। यह एक साधारण टेक्स्ट फ़ाइल होगी। फिर आप इस JSON फ़ाइल को अपने किसी भी पसंदीदा टेक्स्ट एडिटर में खोल सकते हैं।

JSON ऑब्जेक्ट

JSON ऑब्जेक्ट घुंघराले ब्रेसिज़ के भीतर संलग्न JSON डेटा के अलावा और कुछ नहीं है। यहाँ एक नमूना JSON ऑब्जेक्ट है:

{
नाम:मक्खी,
कर्मचारी आयडी:२३५४७ए,
फ़ोन: २३५४७,
विभाग:वित्त
}

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

JSON सरणी

JSON सरणी में कई अल्पविराम से अलग किए गए JSON ऑब्जेक्ट हो सकते हैं। JSON सरणी एक वर्ग ब्रैकेट के भीतर संलग्न है। आइए JSON सरणी का एक उदाहरण देखें:

'छात्र':[
{'पहला नाम':'सीन', 'उपनाम':'भूरा'},
{'पहला नाम':'ड्रेक', 'उपनाम':'विलियम्स'},
{'पहला नाम':'टॉम', 'उपनाम':'मिलर'},
{पहला नाम:पीटर,उपनाम:जॉनसन}
]

यह JSON सरणी का एक उदाहरण है। यहां, छात्रों को एक वर्ग ब्रैकेट, यानी सरणी के साथ संलग्न किया गया है, और इसमें चार JSON ऑब्जेक्ट हैं। इनमें से प्रत्येक ऑब्जेक्ट को की-वैल्यू पेयर के रूप में दर्शाया जाता है और अल्पविराम द्वारा अलग किया जाता है।

एक नमूना JSON फ़ाइल

अब, चूंकि हमने JSON डेटा, JSON ऑब्जेक्ट, JSON सरणी को समझ लिया है, आइए JSON फ़ाइल का एक उदाहरण देखें:

{
पहला नाम:शॉन,
उपनाम:भूरा,
स्टूडेंट आईडी: २१४५३,
विभाग:कंप्यूटर विज्ञान,
विषयों:[गणित,Phy,केम]
}

सी ++ में पार्सिंग पुस्तकालय:

C++ में JSON डेटा को पार्स करने के लिए कोई मूल समाधान नहीं है। हालाँकि, C++ में JSON डेटा को पार्स करने के लिए कई लाइब्रेरी हैं। इस लेख में, हम C++ में JSON डेटा को पार्स करने के लिए दो सबसे लोकप्रिय पुस्तकालयों पर गौर करने जा रहे हैं। यहाँ JSON डेटा को पार्स करने के लिए GitHub लिंक दिए गए हैं:

  1. https://github.com/nlohmann/json
  2. https://github.com/Tencent/rapidjson/

नीचे दिखाए गए उदाहरणों को निष्पादित करने में सक्षम होने के लिए आप इन पुस्तकालयों को डाउनलोड करना चाह सकते हैं।

उदाहरण

अब, हमें JSON डेटा, ऑब्जेक्ट, एरेज़ और उपलब्ध पार्सिंग लाइब्रेरी की बुनियादी समझ है। आइए अब C++ में JSON डेटा को पार्स करने के लिए कुछ उदाहरण देखें:

  • उदाहरण -1: पार्स JSON C++ . में
  • उदाहरण -2: JSON को C++ में पार्स और सीरियलाइज़ करें
  • उदाहरण -3: JSON को C++ में पार्स करें

उदाहरण -1 और उदाहरण -2 के लिए, हम nlohmann पुस्तकालय का उपयोग करने जा रहे हैं। उदाहरण -3 के मामले में, हम रैपिडजसन लाइब्रेरी का उपयोग करेंगे।

उदाहरण -1: पार्स JSON C++ . में

इस उदाहरण कार्यक्रम में, हम प्रदर्शित करेंगे कि C++ में JSON डेटा के मूल्यों तक कैसे पहुंचें।

#शामिल
#शामिल 'json.hpp'

जेसन का उपयोग करना=न्लोहमान::जेसन;

NSमुख्य()
{

// जेडी कर्मचारी
जेसन जेडी कर्मचारी=
{
{'पहला नाम','सीन'},
{'उपनाम','भूरा'},
{'स्टूडेंट आईडी',२१४५३},
{'विभाग','कंप्यूटर वैज्ञानिक'}
};

// मूल्यों तक पहुंचें
घंटे::डोरीfName=जद कर्मचारी।मूल्य('पहला नाम', 'उफ़');
घंटे::डोरीएलनाम=जद कर्मचारी।मूल्य('उपनाम', 'उफ़');
NSसिड=जद कर्मचारी।मूल्य('स्टूडेंट आईडी', 0);
घंटे::डोरीविभाग=जद कर्मचारी।मूल्य('विभाग', 'उफ़');

// मानों को प्रिंट करें
घंटे::लागत << 'पहला नाम: ' <<fName<<घंटे::एंडली;
घंटे::लागत << 'उपनाम: ' <<एलनाम<<घंटे::एंडली;
घंटे::लागत << 'स्टूडेंट आईडी: ' <<सिड<<घंटे::एंडली;
घंटे::लागत << 'विभाग: ' <<विभाग<<घंटे::एंडली;

वापसी 0;
}

उदाहरण -2: JSON को C++ में पार्स और सीरियलाइज़ करें

इस उदाहरण कार्यक्रम में, हम यह देखने जा रहे हैं कि C++ में JSON को कैसे पार्स और क्रमबद्ध किया जाए। हम JSON डेटा को पार्स करने के लिए json::parse() का उपयोग कर रहे हैं।

#शामिल
#शामिल 'json.hpp'
#शामिल

जेसन का उपयोग करना=न्लोहमान::जेसन;

NSमुख्य()
{
// यहाँ एक JSON टेक्स्ट है
charमूलपाठ[] =आर'(
{
'
पुस्तक': {
'
चौड़ाई': 450,
'
ऊंचाई': 30,
'
शीर्षक':'नमस्ते दुनिया',
'
जीवनी है': झूठा,
'
नंबरऑफकॉपी': 4,
'
पुस्तकालय आईडी': [२३१९, १४०६, ३८५४, ९८७]
}
}
)'
;

// आइए JSON को पार्स और क्रमबद्ध करें
जेसन जे_कम्प्लीट=जेसन::पार्स(मूलपाठ);
घंटे::लागत <<घंटे::सेटव(4) <<j_complete<<घंटे::एंडली;
}

उदाहरण -3: JSON को C++ में पार्स करें

अब, हम प्रदर्शित करेंगे कि रैपिडजसन लाइब्रेरी का उपयोग करके JSON स्ट्रिंग को कैसे पार्स किया जाए। रैपिडजसन मूल रूप से रैपिडएक्सएमएल से प्रेरित था। इस उदाहरण कार्यक्रम में, हम एक JSON स्ट्रिंग को DOM में पार्स कर रहे हैं। हमने mydoc प्रकार का दस्तावेज़ घोषित किया है और फिर JSON स्ट्रिंग को पार्स करने के लिए mydoc.parse() विधि का उपयोग किया है।

#शामिल
#शामिल 'रैपिडजसन/राइटर.एच'
#शामिल 'rapidjson/document.h'
#शामिल 'rapidjson/stringbuffer.h'

नेमस्पेस रैपिडजसन का उपयोग करना;

NSमुख्य()
{

स्थिरांक char*जेसन= '{'पहला नाम':'शॉन','उपनाम':'भूरा','empId': २१४५३,
'
विभाग':'कंप्यूटर विज्ञान'}';

// JSON स्ट्रिंग को DOM में पार्स करें
दस्तावेज़ mydoc;
मायडॉकपार्स(जेसन);

// डोम टू स्ट्रिंग
स्ट्रिंगबफर बफर;
लेखक<स्ट्रिंगबफर>लेखक(बफर);

मायडॉकस्वीकार करना(लेखक);

// आउटपुट प्रिंट करें
घंटे::लागत <<बफर।गेटस्ट्रिंग() <<घंटे::एंडली;

वापसी 0;
}

निष्कर्ष

इस लेख में, हमने संक्षेप में चर्चा की है JSON डेटा, ऑब्जेक्ट, ऐरे और सिंटैक्स। जैसा कि हम जानते हैं, C++ में JSON डेटा पार्सिंग के लिए कोई मूल समाधान नहीं है; हमने C++ में JSON डेटा को पार्स करने के लिए दो अलग-अलग पुस्तकालयों का उपयोग किया है। हमने C++ में JSON डेटा पार्सिंग मैकेनिज्म को प्रदर्शित करने के लिए तीन अलग-अलग उदाहरणों पर ध्यान दिया। nlohmann पुस्तकालय की तुलना में, रैपिडजसन छोटा, तेज और स्मृति के अनुकूल है।