जंग में क्रमांकन और अक्रमांकन तकनीकों का उपयोग करके सहजता से JSON प्रारूप और जंग वस्तुओं के बीच डेटा को परिवर्तित करना सीखें।
JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) सॉफ्टवेयर में एक लोकप्रिय डेटा इंटरचेंज प्रारूप के रूप में उभरा है विभिन्न प्रोग्रामिंग में इसकी सादगी, पठनीयता और व्यापक समर्थन के कारण विकास भाषाएँ। JSON सर्वर और वेब एप्लिकेशन के बीच या विभिन्न सॉफ़्टवेयर सिस्टम घटकों के बीच डेटा संचारित करने के लिए XML का एक हल्का विकल्प है।
JSON के साथ काम करने के प्रमुख पहलुओं में से एक क्रमांकन और अक्रमांकन की प्रक्रिया है आपको JSON डेटा को एक संरचित प्रारूप में बदलने की अनुमति देता है जिसे आप आसानी से अपने भीतर हेरफेर कर सकते हैं कार्यक्रम। ज्यादातर बार, यदि आप JSON के साथ अन्य भाषाओं में काम करना चाहते हैं, तो आपको JSON डेटा को भाषा के अंतर्निहित डेटा संरचनाओं में क्रमबद्ध और डीरियलाइज़ करने की आवश्यकता हो सकती है।
Serde के साथ शुरुआत करना
Serde (सीरियलाइज़ेशन और डिसेरिएलाइज़ेशन) एक व्यापक रूप से इस्तेमाल की जाने वाली रस्ट लाइब्रेरी है जो रूपांतरण के लिए एक रूपरेखा प्रदान करती है जंग डेटा संरचनाएं भंडारण, संचरण, साझाकरण और अन्य के लिए प्रारूपों में।
Serde JSON, YAML, BSON, CBOR, MessagePack, और अन्य सहित रस्ट डेटा प्रकारों और विभिन्न डेटा इंटरचेंज स्वरूपों के बीच सहज रूपांतरण को सक्षम करता है।
Serde का प्राथमिक ध्यान मजबूत टाइपिंग और सुरक्षा सुविधाओं को बनाए रखते हुए क्रमांकन और अक्रमांकन प्रक्रिया को यथासंभव सरल और कुशल बनाना है।
इन निर्देशों को इसमें जोड़ें निर्भरता आपका खंड कार्गो.टोमल फ़ाइल को स्थापित करने और उपयोग करने के लिए सर्दे के तौर पर कार्गो के साथ तीसरे पक्ष की निर्भरता.
[निर्भरता]
सेर्डे = {संस्करण = "1.0.159", सुविधाएँ = ["व्युत्पन्न"] }
serde_json = "1.0.96"
आपको दोनों की आवश्यकता होगी सेर्डे और serde_json JSON के साथ इंटरैक्ट करने के लिए क्रेट। सेर्डे टोकरा मुख्य कार्यात्मकता प्रदान करता है, और serde_json JSON के साथ काम करने के लिए टोकरा Serde का एक विशिष्ट कार्यान्वयन है।
यहां बताया गया है कि आप कैसे आयात कर सकते हैं serde_json टोकरा और क्रमबद्ध करें और deserialize मॉड्यूल से सेर्डे टोकरा:
उपयोग सेर्डे:: {सीरियलाइज़, डिसेरिअलाइज़};
उपयोग सर्दे_जसन;
यदि आप JSON के साथ Rust में काम कर रहे हैं, तो कुल मिलाकर, Serde एक शक्तिशाली उपकरण है जिसकी आपको अपने विकास शस्त्रागार में आवश्यकता होगी।
Serde के साथ डेटा क्रमांकन
JSON क्रमांकन प्रक्रिया में अन्य कार्यों के लिए एक जंग प्रकार (कस्टम या बिल्ट-इन) को JSON में परिवर्तित करना शामिल है। Serde उन विशेषताओं का एक सेट प्रदान करता है जिनका उपयोग आप क्रमांकन प्रक्रिया पर सटीक नियंत्रण को सक्षम करने के लिए रस्ट स्ट्रक्चर के साथ कर सकते हैं, जिसमें शामिल हैं #[व्युत्पन्न (सीरियलाइज़)] विशेषता जो आपको अपने डेटा संरचनाओं के लिए क्रमांकन कोड उत्पन्न करने और अपनी जंग संरचना को JSON में बदलने की अनुमति देती है।
किसी व्यक्ति के बायोडाटा का प्रतिनिधित्व करने वाली इस संरचना पर विचार करें; यहां बताया गया है कि आप कैसे आयात और उपयोग कर सकते हैं क्रमबद्ध करें संरचना पर विशेषता:
उपयोग सेर्डे:: {सीरियलाइज़, डिसेरिअलाइज़};
उपयोग सर्दे_जसन;
#[व्युत्पन्न (सीरियलाइज़)]
structव्यक्ति {
नाम: डोरी,
आयु: यू32,
}
टिप्पणी करके व्यक्ति के साथ संरचना [#derive (सीरियलाइज़)], आप Serde को आवश्यक क्रमांकन कोड उत्पन्न करने के लिए कह रहे हैं व्यक्ति संरचना स्वचालित रूप से।
यहां बताया गया है कि आप कैसे एक उदाहरण को क्रमबद्ध कर सकते हैं व्यक्ति जेएसओएन के लिए संरचना:
उपयोग सर्द:: {सीरियलाइज़};
उपयोग सर्दे_जसन;fnमुख्य() {
// नाम और आयु क्षेत्रों के साथ व्यक्ति संरचना उदाहरण की घोषणा
होने देना व्यक्ति = व्यक्ति {
नाम: "चुक्वेमेरिवो"।स्ट्रिंग(),
आयु: 28,
};// Serde_json लाइब्रेरी का उपयोग करके व्यक्ति संरचना को JSON में क्रमबद्ध करता है
होने देना json = serde_json:: to_string(&person).expect("सीरियलाइज़ेशन विफल");
// क्रमबद्ध JSON स्ट्रिंग प्रिंट करता है
प्रिंटल!("सीरियलाइज्ड JSON: {}", जसन);
}
में मुख्य कार्य, द serde_json टोकरा क्रमबद्ध करता है व्यक्ति वस्तु। स्ट्रिंग फ़ंक्शन का संदर्भ लेता है व्यक्ति ऑब्जेक्ट और क्रमबद्ध डेटा का प्रतिनिधित्व करने वाली JSON स्ट्रिंग देता है।
अंततः मुख्य फ़ंक्शन क्रमबद्ध JSON को कंसोल पर प्रिंट करता है।
सेर्डे और serde_json बहुमुखी हैं, आप सर्द के साथ सरणियों को क्रमबद्ध भी कर सकते हैं।
उपयोग सेर्डे:: {सीरियलाइज़, डिसेरिअलाइज़};
उपयोग सर्दे_जसन;#[व्युत्पन्न (सीरियलाइज़)]
structCOORDINATES {
एक्स: f32,
वाई: f32,
}fnमुख्य() {
होने देना अंक = वीसी![
एक्स निर्देशांक: 1.0, वाई: 2.0 },
एक्स निर्देशांक: 3.5, वाई: 4.5 },
];होने देना json = Serde_json:: to_string (& अंक) .उम्मीद ("सीरियलाइज़ेशन विफल");
प्रिंटल!("सीरियलाइज्ड JSON: {}", जसन); // क्रमबद्ध JSON स्ट्रिंग प्रिंट करें
}
अंक चर का सदिश है COORDINATES एक विमान पर बिंदुओं का प्रतिनिधित्व करने वाली संरचनाएं। लागू करना क्रमबद्ध करें विशेषता के लिए COORDINATES संरचना आपको वेक्टर को जेएसओएन को आसानी से क्रमबद्ध करने की अनुमति देती है।
इसके अतिरिक्त, आप JSON में एनम्स को क्रमबद्ध कर सकते हैं सेर्डे जैसे आप स्ट्रक्चर्स और वैक्टर को क्रमबद्ध करते हैं।
उपयोग सेर्डे:: {सीरियलाइज़, डिसेरिअलाइज़};
उपयोग सर्दे_जसन;#[व्युत्पन्न (सीरियलाइज़, डीसेरियलाइज़)]
एनुमजानवर {
कुत्ता(डोरी),
बिल्ली(यू32),
चिड़िया,
}fnमुख्य() {
होने देना कुत्ता = पशु:: कुत्ता ("जंग खाया हुआ"।स्ट्रिंग());होने देना json = serde_json:: to_string(&dog).expect("सीरियलाइज़ेशन विफल");
प्रिंटल!("सीरियलाइज्ड JSON: {}", जसन);
}
संस्करण के आधार पर, क्रमांकन प्रक्रिया तदनुसार अनुकूलित होती है (इस मामले में, पशु:: कुत्ता वेरिएंट में ए शामिल है डोरी वह फ़ील्ड जिसे Serde JSON स्ट्रिंग के रूप में क्रमबद्ध करेगा)।
Serde के साथ डेटा अक्रमांकन
JSON अक्रमांकन JSON डेटा को एक प्रोग्रामिंग भाषा के मूल डेटा प्रकारों में बदलने की प्रक्रिया है। Serde JSON अक्रमांकन के लिए एक व्यापक ढांचा प्रदान करता है जो अधिकांश अंतर्निहित डेटा प्रकारों पर काम करता है।
क्रमांकन के समान, Serde उन विशेषताओं की पेशकश करता है जिनका उपयोग आप डीसेरलाइज़ेशन प्रक्रिया के लिए अपने रस्ट स्ट्रक्चर्स को एनोटेट करने के लिए कर सकते हैं। क्रमांकन के लिए आमतौर पर उपयोग की जाने वाली दो विशेषताएँ हैं #[व्युत्पन्न (Deserialize)] और #[सर्ड (नाम बदलें = "json_field_name")] गुण।
#[व्युत्पन्न (Deserialize)] विशेषता स्वचालित रूप से आपके लिए डिसेरिएलाइज़ेशन कार्यान्वयन प्राप्त करती है जंग संरचना प्रकार, जब #[सर्ड (नाम बदलें = "json_field_name")] विशेषता आपको JSON फ़ील्ड नामों से संबंधित संरचना फ़ील्ड को मैप करने की अनुमति देती है।
यहां बताया गया है कि कैसे आप JSON डेटा को Serde के साथ एक कस्टम स्ट्रक्चर प्रकार में डिसेर्बलाइज कर सकते हैं:
उपयोग सेर्डे:: डिसेरिअलाइज;
उपयोग सर्दे_जसन;// Serde से Deserialize विशेषता वाले व्यक्ति के लिए एक संरचना को परिभाषित करता है
#[व्युत्पन्न (Deserialize)]
structव्यक्ति {
#[सर्डे (नाम बदलें = "नाम")]// फ़ील्ड का नाम बदलकर "नाम" करें
पूरा नाम: डोरी,
आयु: यू32,
}fnमुख्य() {
होने देना json_data = आर #"
{
"नाम": "जॉन डो",
"आयु": 30
}
"#;// JSON डेटा को एक व्यक्ति संरचना में deserializes
होने देना व्यक्ति: व्यक्ति = Serde_json:: from_str (json_data).unwrap ();
// व्यक्ति का पूरा नाम और उम्र प्रिंट करें
प्रिंटल!("नाम: {}", व्यक्ति.पूर्ण_नाम);
प्रिंटल!("आयु: {}", व्यक्ति.उम्र);
}
टिप्पणी करके व्यक्ति के साथ संरचना #[व्युत्पन्न (Deserialize)] विशेषता, आप इंगित करते हैं कि Serde JSON से संरचना को निष्क्रिय कर सकता है। #[सर्डे (नाम बदलें = "नाम")] विशेषता मानचित्र नाम JSON में फ़ील्ड पूरा नाम मैदान।
from_str समारोह deserializes json_data में परिवर्तनशील व्यक्ति वस्तु, और मुख्य फ़ंक्शन फ़ील्ड को कंसोल पर प्रिंट करता है।
Serde आदिम प्रकार, एनम, नेस्टेड स्ट्रक्चर और संग्रह सहित विभिन्न रस्ट डेटा प्रकारों पर डिसेरिएलाइज़ेशन का समर्थन करता है।
यहां बताया गया है कि आप एक JSON सरणी को एक सदिश क्षेत्र वाली जंग संरचना में कैसे निष्क्रिय कर सकते हैं:
उपयोग सेर्डे:: डिसेरिअलाइज;
#[व्युत्पन्न (Deserialize)]
structआंकड़े {
नंबर: वी.ई.सी<यू32>,
}fnमुख्य() {
होने देना json_data = आर #"
{
"नंबर": [1, 2, 3, 4, 5]
}
"#;होने देना डेटा: डेटा = Serde_json:: from_str (json_data).unwrap ();
के लिए संख्या में डेटा नंबर {
प्रिंटल!("संख्या: {}", संख्या);
}
}
मुख्य समारोह deserializes json_data JSON सामग्री में आंकड़े चर, और लूप वेक्टर में तत्वों को प्रिंट करता है।
आपको यह सुनिश्चित करना चाहिए कि आपके पास एक अक्रमांकन प्रक्रिया के लिए सही डेटा प्रकार और पहचानकर्ता हैं।
Serde लोकप्रिय रस्ट वेब फ्रेमवर्क के साथ इंटरऑपरेट करता है
Serde कई सुविधाओं के साथ एक शक्तिशाली पुस्तकालय है और विभिन्न स्वरूपों में डेटा को क्रमबद्ध और डीरियलाइज़ करने के लिए एक सरल एपीआई है।
रस्ट इकोसिस्टम में सर्डे को व्यापक रूप से अपनाया गया है, और कई लोकप्रिय क्रेट और फ्रेमवर्क बिल्ट-इन हैं Serde के लिए समर्थन, जिसमें Actix, Warp, और Rocket जैसे लोकप्रिय वेब फ्रेमवर्क और डेटाबेस ORM जैसे शामिल हैं डीजल।