C++ में JSON प्रोसेसिंग: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण
\n\nJSON (JavaScript Object Notation) एक हल्का डेटा इंटरचेंज फॉर्मेट है, जिसका व्यापक रूप से वेब एप्लिकेशन, API और कॉन्फ़िगरेशन फ़ाइलों में उपयोग किया जाता है। C++ में, JSON के साथ काम करना मानक लाइब्रेरी में अंतर्निहित नहीं है, इसलिए डेवलपर्स तृतीय-पक्ष लाइब्रेरीज़ का उपयोग करते हैं। इस लेख में, हम तीन सबसे लोकप्रिय टूल्स पर विचार करेंगे: nlohmann/json, RapidJSON और Boost.JSON। आप सीखेंगे कि उन्हें कैसे स्थापित करें, JSON को पार्स करें, अपनी स्वयं की संरचनाएँ बनाएँ और डेटा को सीरियलाइज़ करें। सभी उदाहरण C++ कोड के साथ दिए गए हैं।
\n\n1. nlohmann/json लाइब्रेरी
\n\nnlohmann/json C++ में JSON के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह अपने सरल और सहज सिंटैक्स के लिए जानी जाती है, जो Python या JavaScript की याद दिलाता है। लाइब्रेरी header-only (केवल हेडर फ़ाइलें) है, जो एकीकरण को सरल बनाती है: प्रोजेक्ट में json.hpp फ़ाइल को कॉपी करना पर्याप्त है।
स्थापना
\nGitHub से json.hpp डाउनलोड करें और इसे शामिल करें:
#include "json.hpp"\nusing json = nlohmann::json;\n\nJSON स्ट्रिंग को पार्स करना
\n#include <iostream>\n#include "json.hpp"\n\nint main() {\n std::string json_str = R"({\n "name": "Alice",\n "age": 30,\n "is_student": false,\n "skills": ["C++", "Python", "JSON"]\n })";\n\n json data = json::parse(json_str);\n\n std::cout << "Name: " << data["name"] << std::endl;\n std::cout << "Age: " << data["age"] << std::endl;\n std::cout << "First skill: " << data["skills"][0] << std::endl;\n\n return 0;\n}\n\nJSON बनाना और सीरियलाइज़ करना
\njson person;\nperson["name"] = "Bob";\nperson["age"] = 25;\nperson["is_student"] = true;\nperson["languages"].push_back("C");\nperson["languages"].push_back("Java");\n\nstd::string serialized = person.dump(4); // 4 — सुंदर आउटपुट के लिए इंडेंटेशन\nstd::cout << serialized << std::endl;\n\n2. RapidJSON लाइब्रेरी
\n\nRapidJSON एक उच्च-प्रदर्शन वाली लाइब्रेरी है, जो गति और न्यूनतम मेमोरी उपयोग पर केंद्रित है। यह भी header-only है और SAX-शैली पार्सिंग (स्ट्रीमिंग) और DOM-शैली (ट्री निर्माण) का समर्थन करती है। यह उन प्रोजेक्ट्स के लिए उपयुक्त है जहाँ प्रदर्शन महत्वपूर्ण है, जैसे गेम इंजन या उच्च-लोड सर्वर।
\n\nस्थापना
\nRapidJSON रिपॉजिटरी से फ़ाइलें डाउनलोड करें और शामिल करें:
\n#include "rapidjson/document.h"\n#include "rapidjson/writer.h"\n#include "rapidjson/stringbuffer.h"\n\nJSON पार्स करना
\n#include <iostream>\n#include "rapidjson/document.h"\n\nint main() {\n const char* json = "{\\"name\\":\\"Charlie\\",\\"age\\":28,\\"active\\":true}";\n rapidjson::Document doc;\n doc.Parse(json);\n\n if (doc.HasParseError()) {\n std::cerr << "Parse error!" << std::endl;\n return 1;\n }\n\n std::cout << "Name: " << doc["name"].GetString() << std::endl;\n std::cout << "Age: " << doc["age"].GetInt() << std::endl;\n\n return 0;\n}\n\nJSON बनाना और सीरियलाइज़ करना
\nrapidjson::Document doc;\ndoc.SetObject();\nrapidjson::Document::AllocatorType& allocator = doc.GetAllocator();\n\ndoc.AddMember("name", "Diana", allocator);\ndoc.AddMember("score", 95.5, allocator);\n\nrapidjson::StringBuffer buffer;\nrapidjson::Writer<rapidjson::StringBuffer> writer(buffer);\ndoc.Accept(writer);\n\nstd::cout << buffer.GetString() << std::endl;\n\n3. Boost.JSON लाइब्रेरी
\n\nBoost.JSON Boost लाइब्रेरीज़ का हिस्सा है, जिसे आधिकारिक तौर पर C++ Bo में स्वीकार किया गया है