C++ में JSON के साथ कार्य: डेटा का पार्सिंग और सीरियलाइज़ेशन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में JSON के साथ कार्य का परिचय

JSON (JavaScript Object Notation) एक हल्का डेटा विनिमय प्रारूप है जो वेब डेवलपमेंट, कॉन्फ़िगरेशन फ़ाइलों और API इंटरफेस में व्यापक रूप से उपयोग किया जाता है। हालाँकि C++ में JSON के लिए अंतर्निहित समर्थन नहीं है, फिर भी कई विश्वसनीय लाइब्रेरीज़ हैं जो डेटा के पार्सिंग (विश्लेषण) और सीरियलाइज़ेशन (स्ट्रिंग में रूपांतरण) को सरल बनाती हैं। इस लेख में, हम दो लोकप्रिय लाइब्रेरीज़ पर विचार करेंगे: nlohmann/json (शुरुआती और आधुनिक परियोजनाओं के लिए अनुशंसित) और Boost.PropertyTree (उन लोगों के लिए जो पहले से Boost का उपयोग कर रहे हैं)। आप सीखेंगे कि C++ में JSON डेटा को कैसे पढ़ें, बनाएं, संशोधित करें और आउटपुट करें।



nlohmann/json लाइब्रेरी: स्थापना और मूल सिद्धांत

nlohmann/json लाइब्रेरी (जिसे अक्सर "JSON for Modern C++" कहा जाता है) अपनी सरलता और सहज API के कारण सबसे लोकप्रिय में से एक है। यह C++11 और उससे ऊपर का समर्थन करती है, इसे बाहरी निर्भरता की आवश्यकता नहीं है, और यह एक एकल हेडर फ़ाइल json.hpp के रूप में वितरित की जाती है।



स्थापना

GitHub रिपॉजिटरी से json.hpp फ़ाइल डाउनलोड करें और इसे अपने प्रोजेक्ट फ़ोल्डर में रखें। फिर इसे कोड में शामिल करें:

#include <iostream>#include <fstream>#include "json.hpp" // लाइब्रेरी शामिल करना

using json = nlohmann::json;


स्ट्रिंग और फ़ाइल से JSON पार्सिंग

लाइब्रेरी स्ट्रिंग, फ़ाइल या इनपुट स्ट्रीम से JSON पार्स करने की अनुमति देती है। स्ट्रिंग से पार्सिंग का एक उदाहरण देखें:

#include <iostream>#include "json.hpp"

using json = nlohmann::json;

int main() { // JSON स्ट्रिंग std::string jsonString = R"({ "name": "Alice", "age": 30, "isStudent": false, "hobbies": ["reading", "coding"] })"; // पार्सिंग json data = json::parse(jsonString); // डेटा तक पहुँच std::cout << "Name: " << data["name"] << std::endl; std::cout << "Age: " << data["age"] << std::endl; std::cout << "Is student: " << (data["isStudent"] ? "true" : "false") << std::endl; // ऐरे पर पुनरावृत्ति for (auto& hobby : data["hobbies"]) { std::cout << "Hobby: " << hobby << std::endl; } return 0;}

फ़ाइल से पार्सिंग के लिए json::parse(std::ifstream("data.json")); का उपयोग करें।



JSON सीरियलाइज़ेशन

JSON ऑब्जेक्ट बनाना और उसे स्ट्रिंग में सीरियलाइज़ करना स्वाभाविक रूप से किया जाता है:

#include <iostream>#include "json.hpp"

using json = nlohmann::json;

int main() { json person; person["name"] = "Bob"; person["age"] = 25; person["isStudent"] = true; person["hobbies"] = {"gaming", "swimming"}; // नेस्टेड ऑब्जेक्ट json address; address["city"] = "Moscow"; address["street"] = "Tverskaya"; person["address"] = address; // इंडेंटेशन के साथ स्ट्रिंग में सीरियलाइज़ेशन std::string serialized = person.dump(4); // फ़ॉर्मेटिंग के लिए 4 स्पेस std::cout << serialized << std::endl; // फ़ाइल में सहेजना std::ofstream file("output.json"); file << person.dump(2); file.close(); return 0;}

dump() विधि ऑब्जेक्ट को स्ट्रिंग में बदलती है। पैरामीटर इंडेंटेशन के लिए स्पेस की संख्या निर्दिष्ट करता है (0 — कॉम्पैक्ट आउटपुट)।



Boost.PropertyTree लाइब्रेरी: वैकल्पिक दृष्टिकोण

यदि आपके प्रोजेक्ट में पहले से Boost का उपयोग किया जा रहा है, तो Boost.PropertyTree लाइब्रेरी JSON और अन्य प्रारूपों (XML, INI) के साथ काम करने का एक सुविधाजनक तरीका प्रदान करती है। यह JSON के लिए कम विशिष्ट है, लेकिन Boost इकोसिस्टम के साथ अच्छी तरह से एकीकृत होती है।



Boost.PropertyTree के साथ JSON पार्सिंग

#include <iostream>#include <boost/property_tree/ptree.hpp>\                

ब्लॉग

पुस्तक अनुशंसाएँ