Preskoči na sadržaj
100% lokalno

JSON u Rust strukturu

Pretvorite JSON dokument u Rust strukture spremne za serde.

Unos
Rezultat

JSON u Rust strukturu

Zalijepite JSON objekt ili niz i ovaj alat generiše odgovarajuće Rust strukture, spremne za upotrebu u projektu koji koristi serde za serijalizaciju. Štedi napor ručnog pisanja tipova polja i atributa derivacija svaki put kada se oblik odgovora API-ja ili datoteke konfiguracije promijeni.

Opcije kontrolišu kako izgledaju generirani kod. Odaberite koje osobine da derivujete — Debug, Clone, Serialize, Deserialize, PartialEq — i da li dodati #[serde(rename_all = "camelCase")] tako da idiomatska snake_case Rust polja i dalje uspješno desijaliziraju camelCase JSON ključeve. Null vrijednosti mogu automatski postati Option<T>, a vi možete odabrati i32, i64 ili u64 za cijele brojeve i String ili posuđeni &str (sa životnom dobi) za tekst. Ugniježđeni objekti mogu generiši kao odvojene strukture ili biti umotane u njihov sopstveni pub mod, a polja mogu biti javna ili privatna.

Nizovi objekata se spajaju u jednu strukturu: polje koje postoji samo na nekim stavkama automatski postaje Option<T>, tako da struktura generisana iz nekoliko primjera zapisa i dalje odgovara cijelom skupu podataka. Nazivi polja se konvertuju u snake_case, Rust ključne reči se pretvaraju u sirove identifikatore kao r#type, a naziv koji se ne može predstaviti čisto čuva originalni ključ preko #[serde(rename = "...")] umjesto toga.

Sve se pokrenava lokalno u vašem pretraživaču — vaš JSON nikada nije negdje otprema, tako da je sigurno zalijepiti stvarne API opterećenja ili podatke o konfiguraciji. Kopirajte generirani kod, preuzmite ga kao .txt datoteku, ili pošaljite izlaz nazad u ulaz da ga dalje dobijete.

FAQ

Instalira li serde ili ga dodaje u Cargo.toml?
Ne. Generiše samo kod strukture. Dodajte serde sa derive funkcijom u vašu Cargo.toml odvojeno: serde = { version = "1", features = ["derive"] }.
Šta se dešava sa poljima koje je null u nekim zapisima a prisutna u drugima?
Kada je "Obavij null polja u Option<T>" uključeno, to polje postaje Option<T> tako da se desijalizuje ispravno bilo da je prisutno, null ili nedostaje.
Zašto polje dobija atribut #[serde(rename = "...")]?
To se pojavljuje kada je preimenovanje camelCase isključeno i JSON ključ ne odgovara generisanom snake_case Rust nazivu polja, tako da se originalni ključ čuva za desijalizaciju.
Može li da generiše strukture iz niza na vrhunskom nivou?
Da. Niz objekata proizvodi tip alias kao pub type Root = Vec<Item>; plus Item strukturu, spajajući polja iz svakog elementa u nizu.
Je li moj JSON negdje otprema?
Ne. Generisanje strukture se pokrenava potpuno u vašem pretraživaču — vaš JSON nikada ne napušta vašu naprav.