C++ में JSON के साथ कार्य का परिचय
\nJSON (JavaScript Object Notation) एक हल्का डेटा विनिमय प्रारूप है जो वेब डेवलपमेंट, कॉन्फ़िगरेशन फ़ाइलों और API में व्यापक रूप से उपयोग किया जाता है। हालाँकि C++ में JSON के लिए अंतर्निहित समर्थन नहीं है, फिर भी कई लाइब्रेरीज़ हैं जो इस प्रारूप के साथ काम करना सरल और सुविधाजनक बनाती हैं। इस लेख में, हम लोकप्रिय लाइब्रेरी nlohmann/json का उपयोग करके C++ में JSON डेटा को पार्स (विश्लेषण) और सीरियलाइज़ (निर्माण) करने का तरीका देखेंगे। यह सामग्री शुरुआती डेवलपर्स के लिए है जो पहले से C++ की मूल बातों से परिचित हैं।
\n\n1. nlohmann/json लाइब्रेरी की स्थापना और कनेक्शन
\nnlohmann/json लाइब्रेरी C++ में JSON के साथ काम करने के लिए सबसे लोकप्रिय और उपयोग में आसान लाइब्रेरीज़ में से एक है। यह C++11 और उससे ऊपर के संस्करणों को सपोर्ट करती है, और सभी प्रमुख प्लेटफार्मों पर काम करती है।
स्थापना के तरीके
\n- \n
- हेडर फ़ाइल डाउनलोड करें: GitHub रिपॉजिटरी पर जाएं और
json.hppफ़ाइल डाउनलोड करें। \n - vcpkg के माध्यम से स्थापना:
vcpkg install nlohmann-json\n - Conan के माध्यम से स्थापना:
conan install nlohmann_json/3.11.2@\n
स्थापना के बाद, अपने प्रोजेक्ट में फ़ाइल को शामिल करें:
\n#include <iostream>\n#include "json.hpp"\nusing json = nlohmann::json;\n\nint main() {\n std::cout << "लाइब्रेरी कनेक्ट हो गई!" << std::endl;\n return 0;\n}\n\n2. JSON पार्सिंग: स्ट्रिंग और फ़ाइल से डेटा पढ़ना
\nपार्सिंग (विश्लेषण) JSON एक प्रक्रिया है जिसमें JSON प्रारूप में स्ट्रिंग को C++ डेटा संरचनाओं में परिवर्तित किया जाता है। nlohmann/json लाइब्रेरी इसे बहुत आसान बनाती है।
स्ट्रिंग से पार्सिंग
\nएक सरल JSON ऑब्जेक्ट के विश्लेषण का उदाहरण देखें:
\n#include <iostream>\n#include "json.hpp"\nusing json = nlohmann::json;\n\nint main() {\n std::string json_str = R"({\n "name": "अन्ना",\n "age": 25,\n "is_student": false,\n "hobbies": ["पढ़ना", "तैराकी", "प्रोग्रामिंग"]\n })";\n\n // स्ट्रिंग का पार्सिंग\n json data = json::parse(json_str);\n\n // डेटा तक पहुंच\n std::string name = data["name"];\n int age = data["age"];\n bool is_student = data["is_student"];\n std::vector<std::string> hobbies = data["hobbies"];\n\n std::cout << "नाम: " << name << std::endl;\n std::cout << "आयु: " << age << std::endl;\n std::cout << "छात्र: " << (is_student ? "हाँ" : "नहीं") << std::endl;\n std::cout << "शौक: ";\n for (const auto& hobby : hobbies) {\n std::cout << hobby << " ";\n }\n std::cout << std::endl;\n\n return 0;\n}\n\nफ़ाइल से पार्सिंग
\nअक्सर JSON डेटा फ़ाइलों में संग्रहीत होता है। इसे पढ़ने का तरीका यहाँ दिया गया है:
\n#include <iostream>\n#include <fstream>\n#include "json.hpp"\nusing json = nlohmann::json;\n\nint main() {\n std::ifstream file("data.json");\n if (!file.is_open()) {\n std::cerr << "फ़ाइल खोलने में त्रुटि!" << std::endl;\n return 1;\n }\n\n json data = json::parse(file);\n file.close();\n\n // डेटा आउटपुट\n std::cout << "फ़ाइल से डेटा: " << data.dump(4) << std::endl;\n return 0;\n}\ndump(4) विधि JSON को वापस स्ट्रिंग में बदलती है जिसमें आसान पढ़ने के लिए 4 स्पेस का इंडेंटेशन होता है।
3. सीरियलाइज़ेशन: C++ डेटा से JSON बनाना
\nसीरियलाइज़ेशन एक विपरीत प्रक्रिया है: C++ डेटा को JSON स्ट्रिंग में बदलना। लाइब्रेरी सहज रूप से JSON ऑब्जेक्ट बनाने की अनुमति देती है।
\n\nएक सरल JSON ऑब्जेक्ट बनाना
\n#include <iostream>\n#include "json.hpp"\nusing json = nlohmann::json;\n\nint main() {\n json person;\n\n person["name"] = "इवान";\n