शुरुआती लोगों के लिए Rust में JSON: डेटा पार्सिंग और सीरियलाइज़ेशन

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

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

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

Rust में JSON के साथ काम करने का परिचय

\n\n

JSON (JavaScript Object Notation) वेब डेवलपमेंट, कॉन्फ़िगरेशन फ़ाइलों और API में डेटा आदान-प्रदान के सबसे लोकप्रिय प्रारूपों में से एक है। यदि आप Rust सीख रहे हैं और JSON के साथ प्रभावी ढंग से काम करना सीखना चाहते हैं, तो यह लेख आपके लिए है। हम मुख्य लाइब्रेरी, पार्सिंग और सीरियलाइज़ेशन के सिद्धांतों के साथ-साथ व्यावहारिक कोड उदाहरणों पर भी चर्चा करेंगे।

\n\n

Rust में JSON के साथ काम करने का इकोसिस्टम क्रेट serde के आसपास बना है - जो डेटा सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के लिए एक शक्तिशाली फ्रेमवर्क है। serde_json के साथ मिलकर, यह डेटा स्ट्रक्चर को JSON में और वापस आसानी से बदलने की अनुमति देता है। आइए समझते हैं कि यह कैसे काम करता है।

\n\n

डिपेंडेंसी इंस्टॉल और सेटअप करना

\n\n

शुरू करने के लिए, एक नया प्रोजेक्ट बनाएं और Cargo.toml फ़ाइल में आवश्यक डिपेंडेंसी जोड़ें:

\n\n
[dependencies]\nserde = { version = "1.0", features = ["derive"] }\nserde_json = "1.0"
\n\n

serde क्रेट मैक्रोज़ #[derive(Serialize, Deserialize)] प्रदान करता है, जो आपके स्ट्रक्चर के लिए आवश्यक ट्रेट्स को स्वचालित रूप से लागू करता है। serde_json सीधे JSON प्रारूप के साथ काम करने के लिए जिम्मेदार है।

\n\n

JSON पार्सिंग: स्ट्रिंग से स्ट्रक्चर में

\n\n

मान लीजिए कि हमारे पास उपयोगकर्ता की जानकारी वाली एक JSON स्ट्रिंग है। हम इसे एक टाइप किए गए Rust स्ट्रक्चर में बदलना चाहते हैं। यह इस प्रकार किया जाता है:

\n\n
use serde::{Deserialize, Serialize};\n\n#[derive(Debug, Deserialize, Serialize)]\nstruct User {\n    name: String,\n    age: u32,\n    email: String,\n    is_active: bool,\n}\n\nfn main() {\n    let json_data = r#"\n        {\n            "name": "Алексей",\n            "age": 28,\n            "email": "alex@example.com",\n            "is_active": true\n        }\n    "#;\n\n    // JSON को स्ट्रक्चर में पार्स करना\n    let user: User = serde_json::from_str(json_data).expect("JSON पार्सिंग में त्रुटि");\n    \n    println!("उपयोगकर्ता: {:?}", user);\n    println!("नाम: {}", user.name);\n    println!("आयु: {}", user.age);\n}
\n\n

एट्रीब्यूट #[derive(Debug, Deserialize, Serialize)] पर ध्यान दें। Debug स्ट्रक्चर को कंसोल पर प्रिंट करने की अनुमति देता है, जबकि Deserialize और Serialize डेटा को JSON में और वापस बदलने की क्षमता प्रदान करते हैं।

\n\n

नेस्टेड ऑब्जेक्ट्स को संभालना

\n\n

JSON में अक्सर नेस्टेड ऑब्जेक्ट्स होते हैं। उपयोगकर्ता के पते के साथ एक उदाहरण देखें:

\n\n
#[derive(Debug, Deserialize, Serialize)]\nstruct Address {\n    city: String,\n    street: String,\n    zip_code: String,\n}\n\n#[derive(Debug, Deserialize, Serialize)]\nstruct User {\n    name: String,\n    age: u32,\n    address: Address,\n}\n\nfn main() {\n    let json_data = r#"\n        {\n            "name": "Мария",\n            "age": 32,\n            "address": {\n                "city": "Москва",\n                "street": "Тверская, 15",\n                "zip_code": "101000"\n            }\n        }\n    "#;\n\n    let user: User = serde_json::from_str(json_data).unwrap();\n    println!("शहर: {}", user.address.city);\n}
\n\n

JSON ऐरे के साथ काम करना

\n\n

JSON में ऐरे Rust के Vec या अन्य कलेक्शन में बदल जाते हैं:

\n\n
use serde::Deserialize;\n\n#[derive(Debug, Deserialize)]\nstruct Product {\n    id: u32,\n    name: String,\n    price: f64,\n}\n\nfn main() {\n    let json_array = r#"\n        [\n            {"id": 1, "name": "Ноутбук", "price": 75000.50},\n            {"id": 2, "name": "Мышь", "price": 1500.00},\n            {"id": 3, "name": "Клавиатура", "price": 3500.00}\n        ]\n    "#;\n\n    let products: Vec<Product> = serde_json::from_str(json_array).unwrap();\n    \n    for product in &products {\n        println!("{}: {} रुपये", product.name, product.price);\n    }\n}
\n\n

सीरियलाइज़ेशन: स्ट्रक्चर से JSON में

\n\n

उल्टी प्रक्रिया - Rust स्ट्रक्चर को JSON स्ट्रिंग में बदलना। इसे सी कहा जाता है

ब्लॉग

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