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

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

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

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

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

JSON (JavaScript Object Notation) आधुनिक अनुप्रयोगों में डेटा आदान-प्रदान के सबसे लोकप्रिय प्रारूपों में से एक है। इस तथ्य के बावजूद कि C++ में JSON के लिए अंतर्निहित समर्थन नहीं है, इस प्रारूप के साथ काम को सरल बनाने वाली कई लाइब्रेरी मौजूद हैं। इस लेख में, हम nlohmann/json लाइब्रेरी का उपयोग करके C++ में JSON के पार्सिंग और सीरियलाइज़ेशन के व्यावहारिक पहलुओं पर विचार करेंगे - जो सबसे लोकप्रिय और उपयोग में आसान लाइब्रेरी में से एक है।

nlohmann/json को क्यों चुनें?

nlohmann/json लाइब्रेरी (जिसे अक्सर JSON for Modern C++ कहा जाता है) अपने सहज ज्ञान युक्त API के कारण लोकप्रिय हुई है, जो STL कंटेनरों के साथ काम करने की याद दिलाती है। यह header-only है (बिल्ड की आवश्यकता नहीं है), C++11 और उससे ऊपर का समर्थन करती है, और उच्च प्रदर्शन और टाइप सुरक्षा सुनिश्चित करती है।

लाइब्रेरी की स्थापना सरल है: बस एक हेडर फ़ाइल json.hpp डाउनलोड करें या पैकेज मैनेजर vcpkg, Conan या CMake FetchContent का उपयोग करें।

#include <nlohmann/json.hpp>
using json = nlohmann::json;

C++ में JSON पार्सिंग की मूल बातें

JSON पार्सिंग एक स्ट्रिंग को संरचित डेटा में बदलने की प्रक्रिया है। nlohmann/json लाइब्रेरी पार्सिंग के कई तरीके प्रदान करती है।

स्ट्रिंग से पार्सिंग

सबसे सामान्य तरीका स्टैटिक मेथड json::parse() का उपयोग करना है:

#include <iostream>
#include <string>
#include <nlohmann/json.hpp>

int main() {
    std::string json_string = R"({\n        "name": "Иван",\n        "age": 30,\n        "is_student": false,\n        "skills": ["C++", "Python", "JavaScript"],\n        "address": {\n            "city": "Москва",\n            "zip": "101000"\n        }\n    })";

    try {
        json data = json::parse(json_string);
        
        // डेटा तक पहुंच
        std::cout << "नाम: " << data["name"] << std::endl;
        std::cout << "आयु: " << data["age"] << std::endl;
        std::cout << "छात्र: " << (data["is_student"] ? "हाँ" : "नहीं") << std::endl;
        
        // ऐरे के साथ कार्य
        for (auto& skill : data["skills"]) {
            std::cout << "कौशल: " << skill << std::endl;
        }
        
        // नेस्टेड ऑब्जेक्ट के साथ कार्य
        std::cout << "शहर: " << data["address"]["city"] << std::endl;
        
    } catch (json::parse_error& e) {
        std::cerr << "पार्सिंग त्रुटि: " << e.what() << std::endl;
    }
    
    return 0;
}

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

फ़ाइलों के साथ काम करने के लिए C++ इनपुट-आउटपुट स्ट्रीम का उपयोग करें:

#include <fstream>
#include <nlohmann/json.hpp>

int main() {
    std::ifstream file("data.json");
    if (!file.is_open()) {
        std::cerr << "फ़ाइल खोलने में विफल" << std::endl;
        return 1;
    }
    
    try {
        json data = json::parse(file);
        std::cout << "डेटा लोड हुआ: " << data.dump(2) << std::endl;
    } catch (json::parse_error& e) {
        std::cerr << "त्रुटि: " << e.what() << std::endl;
    }
    
    return 0;
}

C++ में JSON सीरियलाइज़ेशन

सीरियलाइज़ेशन विपरीत प्रक्रिया है: C++ डेटा को JSON स्ट्रिंग में बदलना। लाइब्रेरी फ़ॉर्मेटिंग की संभावना के साथ dump() मेथड प्रदान करती है।

JSON ऑब्जेक्ट बनाना

आप सीधे JSON ऑब्जेक्ट बना सकते हैं, जैसे सामान्य एसोसिएटिव ऐरे:

#include <nlohmann/json.hpp>
#include <iostream>

int main() {
    json person;
    person["name"] = "Мария";
    person["age"] = 25;
    person["is_employed"] = true;
    person["languages"] = {"Русский", "Английский", "Немецкий"};                

ब्लॉग

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