Sări la conținut
Complet local

JSON în struct Rust

Transformă un document JSON în struct-uri Rust gata de serde.

Intrare
Ieșire

JSON în struct Rust

Lipiți un obiect sau tablou JSON și acest instrument generează struct-uri Rust corespunzătoare, gata de folosit într-un proiect care utilizează serde pentru serializare. Elimină munca manuală de scriere a tipurilor de câmpuri și atribute derive de fiecare dată când răspunsul unei API sau fișierul de configurație se schimbă de structură.

Opțiunile controlează modul în care arată codul generat. Alegeți care trait-uri să derivați — Debug, Clone, Serialize, Deserialize, PartialEq — și dacă trebuie să adăugați #[serde(rename_all = "camelCase")] pentru ca câmpurile Rust idiomatice în snake_case să continue deserializarea cheilor JSON în camelCase corect. Valorile null pot deveni Option<T> automat, iar voi puteti alege i32, i64 sau u64 pentru numere întregi și String sau &str împrumutată (cu o lifetime) pentru text. Obiectele imbricate pot genera ca struct-uri separate la nivel superior sau fi încadrate în propriul lor pub mod, iar câmpurile pot fi publice sau private.

Tablourile de obiecte sunt fuzionate într-o singură struct: un câmp prezent doar în unele elemente devine Option<T> automat, deci o struct generată din câteva eșantioane de înregistrări se potrivește în continuare cu setul complet de date. Numele câmpurilor sunt convertite în snake_case, cuvintele cheie Rust devin identificatori bruti cum ar fi r#type, iar un nume care nu poate fi reprezentat curat păstrează cheia sa originală prin #[serde(rename = "...")] în schimb.

Tot se execută local în browserul dumneavoastră — JSON-ul dumneavoastră nu este trimis niciodată nicăieri, deci este sigur să lipiți cargi reale de API sau date de configurație. Copiați codul generat, descărcați ca fișier .txt, sau trimiteti ieșirea înapoi la intrare pentru a o rafina în continuare.

FAQ

Instalează serde sau îl adaugă la Cargo.toml?
Nu. Doar generează codul struct. Adăugați serde cu funcția derive în Cargo.toml-ul dumneavoastră separat: serde = { version = "1", features = ["derive"] }.
Ce se întâmplă cu un câmp care este null în unele înregistrări și prezent în altele?
Când "Încadrează câmpurile null în Option<T>" este activat, acel câmp devine Option<T> pentru ca acesta să deserializeze corect dacă este prezent, null sau lipsă.
De ce un câmp primește un atribut #[serde(rename = "...")]?
Apare când redenumirea camelCase este dezactivată și cheia JSON nu se potrivește cu numele câmpului Rust generat în snake_case, deci cheia originală exactă este păstrată pentru deserializare.
Poate genera struct-uri din un tablou la nivel superior?
Da. Un tablou de obiecte produce un alias de tip cum ar fi pub type Root = Vec<Item>; plus struct-ul Item, fuzionând câmpurile din fiecare element din tablou.
JSON-ul meu este trimis undeva?
Nu. Generarea struct-urilor se execută în întregime în browserul dumneavoastră — JSON-ul dumneavoastră nu părăsește niciodată dispozitivul dumneavoastră.