nlohmann/json का परिचय: यह क्या है और क्यों ज़रूरी है
nlohmann/json लाइब्रेरी (जिसे JSON for Modern C++ भी कहा जाता है) C++ भाषा में JSON के साथ काम करने के लिए सबसे लोकप्रिय और सुविधाजनक लाइब्रेरी में से एक है। इसे Niels Lohmann ने विकसित किया है और यह MIT लाइसेंस के तहत उपलब्ध है। इस लाइब्रेरी का मुख्य उद्देश्य JSON डेटा को पार्स करने, बनाने, संशोधित करने और सीरियलाइज़ करने के लिए एक सहज, आधुनिक और सुरक्षित इंटरफ़ेस प्रदान करना है।
यह क्यों ज़रूरी है? आधुनिक डेवलपमेंट में JSON (JavaScript Object Notation) सर्विसेज के बीच डेटा एक्सचेंज, कॉन्फ़िगरेशन स्टोर करने, API और वेब एप्लिकेशन के साथ काम करने का मानक बन गया है। C++ की स्टैंडर्ड लाइब्रेरी में JSON के लिए कोई बिल्ट-इन सपोर्ट नहीं है, इसलिए डेवलपर्स को या तो खुद का पार्सर लिखना पड़ता है या थर्ड-पार्टी समाधान का उपयोग करना होता है। nlohmann/json इस समस्या को हल करता है और निम्नलिखित सुविधाएँ प्रदान करता है:
- सरल सिंटैक्स — JSON के साथ काम करना STL कंटेनर (std::map, std::vector) के साथ काम करने जैसा लगता है।
- टाइप सेफ्टी — C++ और JSON टाइप्स के बीच ऑटोमैटिक कन्वर्ज़न।
- उच्च प्रदर्शन — स्पीड और मेमोरी के लिए ऑप्टिमाइज़्ड।
- क्रॉस-प्लेटफ़ॉर्म — Windows, Linux, macOS और एम्बेडेड सिस्टम पर काम करता है।
- JSON स्टैंडर्ड का पूर्ण समर्थन — नेस्टेड ऑब्जेक्ट्स, ऐरे, null, बूलियन वैल्यू, नंबर और स्ट्रिंग्स सहित।
यह लाइब्रेरी गेम इंजन, वेब सर्वर, डेटा एनालिसिस टूल्स और IoT डिवाइस जैसे इंडस्ट्रियल प्रोजेक्ट्स में सक्रिय रूप से उपयोग की जाती है।
nlohmann/json की स्थापना (इंस्टॉलेशन)
Python (जहाँ pip का उपयोग होता है) के विपरीत, C++ में लाइब्रेरीज़ को कई तरीकों से इंस्टॉल किया जा सकता है। आइए सबसे लोकप्रिय तरीकों पर नज़र डालते हैं।
तरीका 1: Header-only (शुरुआती लोगों के लिए अनुशंसित)
nlohmann/json लाइब्रेरी header-only है — इसका मतलब है कि इसका उपयोग करने के लिए बस एक हेडर फ़ाइल json.hpp डाउनलोड करके प्रोजेक्ट में शामिल करना होता है। किसी कम्पाइलेशन, लिंकिंग या डिपेंडेंसी इंस्टॉल करने की ज़रूरत नहीं है।
- आधिकारिक रिपॉजिटरी से
json.hppफ़ाइल डाउनलोड करें (नवीनतम वर्ज़न v3.11.3)। - इसे अपने प्रोजेक्ट फ़ोल्डर में रखें, जैसे
include/json.hpp। - सोर्स कोड में शामिल करें:
#include "json.hpp"।
तरीका 2: पैकेज मैनेजर के माध्यम से स्थापना
यदि आप आधुनिक बिल्ड सिस्टम का उपयोग करते हैं, तो पैकेज मैनेजर के माध्यम से लाइब्रेरी इंस्टॉल कर सकते हैं:
- vcpkg (Windows, Linux, macOS):
vcpkg install nlohmann-json - Conan:
conan install nlohmann_json/3.11.3@ - Homebrew (macOS):
brew install nlohmann-json - APT (Ubuntu/Debian):
sudo apt install nlohmann-json3-dev
तरीका 3: CMake FetchContent
CMake प्रोजेक्ट्स के लिए, बिल्ड के दौरान ऑटोमैटिक रूप से लाइब्रेरी डाउनलोड की जा सकती है:
include(FetchContent)
FetchContent_Declare(
json
GIT_REPOSITORY https://github.com/nlohmann/json.git
GIT_TAG v3.11.3
)
FetchContent_MakeAvailable(json)
target_link_libraries(your_target PRIVATE nlohmann_json::nlohmann_json)
त्वरित शुरुआत: पहला उदाहरण
चलिए एक सरल प्रोग्राम लिखते हैं जो एक JSON ऑब्जेक्ट बनाता है, उसे स्क्रीन पर प्रिंट करता है, और फिर एक JSON स्ट्रिंग को वापस पार्स करता है।
#include <iostream>
#include "json.hpp"
using json = nlohmann::json;
int main() {
// 1. JSON ऑब्जेक्ट बनाना
json person = {
{"name", "Rahul"},
{"age", 28},
{"is_student", false},
{"skills", {"C++", "Python", "JSON"}},
{"address", {
{"city", "Mumbai"},
{"zip", "400001"}
}}
};
// 2. JSON को स्ट्रिंग में बदलना और प्रिंट करना
std::cout << "JSON ऑब्जेक्ट:" << std::endl;
std::cout << person.dump(4) << std::endl; // 4 = इंडेंटेशन स्पेस
// 3. JSON स्ट्रिंग को पार्स करना
std::string json_str = R"({"name":"Priya","age":25,"city":"Delhi"})";
json parsed = json::parse(json_str);
std::cout << "\nपार्स किया गया नाम: " << parsed["name"] << std::endl;
std::cout << "उम्र: " << parsed["age"] << std::endl;
return 0;
} पुस्तकालय में भी
WireMock Java: पूरी गाइड, उदाहरण और सेटअप
TypeScript में HTML पार्सिंग: लाइब्रेरी, टूल्स और कोड उदाहरण
Swift के लिए कार्य कतारें: GCD और Operation Queues का संपूर्ण मार्गदर्शिका
C# (.NET) में JSON प्रोसेसिंग: Newtonsoft.Json और System.Text.Json के लिए पूर्ण गाइड