nlohmann/json लाइब्रेरी के साथ C++ में JSON प्रोसेसिंग
C++ में आधुनिक डेवलपमेंट में, वेब-सर्विसेज़, कॉन्फ़िगरेशन फ़ाइलें और सिस्टम के बीच डेटा आदान-प्रदान बनाते समय JSON (JavaScript Object Notation) के साथ काम करना एक अनिवार्य हिस्सा बन गया है। इस कार्य के लिए सबसे लोकप्रिय और सुविधाजनक लाइब्रेरी में से एक nlohmann/json (या बस JSON for Modern C++) है। यह सहज ज्ञान युक्त API, न्यूनतम सिंटैक्स और उच्च प्रदर्शन प्रदान करती है। इस लेख में, हम विस्तार से समझेंगे कि C++ में JSON डेटा को पार्स करने, बनाने, संशोधित करने और सीरियलाइज़ करने के लिए इस लाइब्रेरी का उपयोग कैसे करें।
इंस्टॉलेशन और शामिल करना
nlohmann/json लाइब्रेरी header-only (केवल हेडर फ़ाइलों से बनी) है। इसे इंस्टॉल करने के लिए, आधिकारिक रिपॉजिटरी से केवल एक फ़ाइल json.hpp डाउनलोड करें और इसे अपने प्रोजेक्ट में शामिल करें:
#include <nlohmann/json.hpp>using json = nlohmann::json;यदि आप CMake का उपयोग कर रहे हैं, तो आप FetchContent या vcpkg के माध्यम से लाइब्रेरी शामिल कर सकते हैं। CMake के लिए उदाहरण:
FetchContent_Declare(json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG v3.11.2)FetchContent_MakeAvailable(json)
target_link_libraries(your_project PRIVATE nlohmann_json::nlohmann_json)लाइब्रेरी की मुख्य क्षमताएँ
- स्ट्रिंग या फ़ाइल से JSON पार्स करना – टेक्स्ट को संरचित डेटा में बदलना।
- JSON ऑब्जेक्ट बनाना –
[]ऑपरेटरों और विधियों का उपयोग करके गतिशील रूप से संरचनाएँ बनाना। - डेटा तक पहुँच – प्रकार जाँच के साथ कुंजियों और इंडेक्स द्वारा मान पढ़ना।
- सीरियलाइज़ेशन – JSON ऑब्जेक्ट को फ़ॉर्मेटिंग के साथ वापस स्ट्रिंग में बदलना।
- एरे और नेस्टेड ऑब्जेक्ट के साथ काम करना – जटिल पदानुक्रमित संरचनाओं का समर्थन।
- त्रुटि प्रबंधन – गलत डेटा या प्रकारों पर अपवाद।
उदाहरण 1: पार्सिंग और डेटा पढ़ना
एक सरल उदाहरण देखते हैं: हमारे पास एक स्ट्रिंग है जिसमें JSON है, जिसमें उपयोगकर्ता के बारे में जानकारी है। इसे पार्स करें और मान निकालें:
#include <iostream>#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() { std::string json_str = R"( { "name": "Иван", "age": 30, "is_student": false, "hobbies": ["чтение", "программирование", "спорт"] } )";
// स्ट्रिंग को json ऑब्जेक्ट में पार्स करना json user = json::parse(json_str);
// प्रकार जाँच के साथ डेटा तक पहुँच std::string name = user["name"]; int age = user["age"]; bool is_student = user["is_student"];
std::cout << "Имя: " << name << std::endl; std::cout << "Возраст: " << age << std::endl; std::cout << "Студент: " << (is_student ? "да" : "нет") << std::endl;
// एरे के साथ काम करना auto& hobbies = user["hobbies"]; std::cout << "Хобби: "; for (const auto& hobby : hobbies) { std::cout << hobby << " "; } std::cout << std::endl;
return 0;}उदाहरण 2: JSON बनाना और सीरियलाइज़ करना
अक्सर प्रोग्रामेटिक रूप से JSON संरचना बनाने की आवश्यकता होती है। निम्नलिखित कोड एक पुस्तक के डेटा के साथ एक ऑब्जेक्ट बनाता है और इसे फ़ॉर्मेटेड रूप में आउटपुट करता है:
#include <iostream>#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() { // एक खाली ऑब्जेक्ट बनाएँ json book;
// डेटा भरें book["title"] = "Война и мир"; book["author"] = "Лев Толстой"; book["year"] = 1869; book["genres"] = {"роман", "историческая литература"};
// नेस्टेड ऑब्जेक्ट book["publisher"]["name"] = "Эксмо";