UTILS.
100% ब्राउज़र में
🦀

JSON से Rust Serde Structs

एक JSON नमूने से serde derives वाले Rust structs बनाएँ, Serialize/Deserialize के लिए तैयार, nullable fields के लिए Option और rename attributes के साथ।

आउटपुट

इस टूल के बारे में

JSON से Rust Serde Structs टूल एक पेस्ट किए गए JSON नमूने को serde के लिए annotated Rust structs में बदल देता है, ताकि आप हर field हाथ से लिखे बिना उसी payload को deserialize कर सकें। यह JSON को पार्स करता है, Rust types को पुनरावर्ती रूप से infer करता है, और प्रति object एक #[derive(Serialize, Deserialize, ...)] struct निकालता है: strings बन जाती हैं String, integers i64 (या u64 जब सभी नमूने non-negative हों), अन्य numbers f64, booleans bool, arrays Vec<T>, और nested objects अपने स्वयं के PascalCase structs जो अपने parents से पहले परिभाषित होते हैं।

सभी काम आपके ब्राउज़र में स्थानीय रूप से JSON.parse और सादे JavaScript के साथ होता है — कुछ भी अपलोड नहीं होता। Struct fields को snake_case में बदला जाता है, और जब भी कोई JSON key snake_case field से अलग होती है तो टूल #[serde(rename = "originalKey")] जोड़ता है ताकि struct अभी भी wire format पर मैप हो। जो keys कुछ sibling नमूनों में अनुपस्थित हैं, या null के रूप में देखी जाती हैं, वे Option<T> बन जाती हैं #[serde(default)] के साथ ताकि deserialization उनकी अनुपस्थिति को सहन करे। खाली arrays Vec<serde_json::Value> पर fall back होती हैं।

integer-width toggle 64-bit (i64/u64, डिफ़ॉल्ट) और 32-bit (i32/u32) integers के बीच स्विच करता है, जब कोई नमूना मान 32-bit सीमा से अधिक हो तो स्वतः 64-bit में promote करता है। derive toggle पूर्ण सेट (Serialize, Deserialize, Debug, Clone) और न्यूनतम Serialize, Deserialize के बीच चुनता है। फ़ाइल use serde::{Serialize, Deserialize}; से शुरू होती है। इसे कॉपी करें या एक .rs फ़ाइल डाउनलोड करें।

अक्सर पूछे जाने वाले प्रश्न

JSON types को Rust में कैसे मैप किया जाता है?
string को String, integer को i64 (या u64 जब हर नमूना non-negative हो), non-integer number को f64, boolean को bool, array को Vec<T>, और object को serde derives वाला एक नामित struct। Null या गायब fields Option<T> बन जाती हैं #[serde(default)] के साथ।
#[serde(rename)] कब जोड़ा जाता है?
जब भी JSON key अपने snake_case field नाम के बराबर न हो — उदाहरण के लिए एक key userName field user_name बनाती है #[serde(rename = "userName")] के साथ, ताकि struct अभी भी मूल JSON को बिल्कुल deserialize करे।
क्या मैं integer width चुन सकता हूँ?
हाँ। width toggle 64-bit (i64/u64) या 32-bit (i32/u32) integers निकालता है। Signedness डेटा का अनुसरण करती है: सभी-non-negative नमूने unsigned type का उपयोग करते हैं। 32-bit सीमा से परे मान स्वतः 64-bit में promote किए जाते हैं।
कौन से derives शामिल हैं?
डिफ़ॉल्ट है #[derive(Serialize, Deserialize, Debug, Clone)]; न्यूनतम विकल्प केवल Serialize, Deserialize निकालता है। Child structs को उन parents से पहले घोषित किया जाता है जो उन्हें संदर्भित करते हैं ताकि module जैसा है वैसा compile हो।

और टूल