Preskoči na vsebino
100% lokalno

JSON v Rust strukturo

Pretvorite JSON dokument v Rust strukture, pripravljene za serde.

Vhod
Izhod

JSON v Rust strukturo

Prilepite JSON objekt ali niz in to orodje ustvari ustrezne Rust strukture, pripravljene za vključitev v projekt, ki uporablja serde za serijalizacijo. Prihrani nalogo ročnega pisanja vrst polj in atributov izvedbe vsakič, ko se oblika odgovora API-ja ali konfiguracije spremeni.

Možnosti nadzirajo, kako izgleda generirani kod. Izberite, katere lastnosti derivirati — Debug, Clone, Serialize, Deserialize, PartialEq — in ali dodati #[serde(rename_all = "camelCase")], da idiomatska polja Rust snake_case še vedno pravilno deserijalizirajo ključe JSON camelCase. Vrednosti null se lahko samodejno spremenijo v Option<T>, in izberete lahko i32, i64 ali u64 za cela števila ter String ali izposojen &str (s trajanjem) za besedilo. Ugnezdeni objekti se lahko ustvarijo kot ločene strukture ali se zavijejo v svoj pub mod, polja pa so lahko javna ali zasebna.

Nizovi objektov se zdijejo v en strukturo: polje, ki obstaja le pri nekaterih stavkah, postane samodejno Option<T>, tako da struktura, ustvarjena iz nekaj vzorčnih zapisov, še vedno ustreza polnemu nizu podatkov. Imena polj se pretvorijo v snake_case, Rust ključne besede se spremenijo v surove identifikatorje, kot je r#type, in ime, ki ga ni mogoče čisto predstaviti, ohrani prvotni ključ prek #[serde(rename = "...")] namesto tega.

Vse se izvaja lokalno v vašem brskalniku — vaš JSON nikoli ni nekje pošljan, zato je varno prilepiti dejanske API obremenitve ali podatke konfiguracije. Kopirajte generirani kod, ga prenesite kot datoteko .txt ali pošljite izlaz nazaj v vhod za nadaljnje izboljšave.

FAQ

Ali namesti serde ali ga doda v Cargo.toml?
Ne. Ustvari samo kodo strukture. Dodajte serde z izvedeno funkcijo v vaš Cargo.toml posebej: serde = { version = "1", features = ["derive"] }.
Kaj se zgodi s poljem, ki je null v nekaterih zapisih in prisotno v drugih?
Ko je "Zavij null polja v Option<T>" vključeno, se to polje spremeni v Option<T>, da se pravilno deserijalizira, ne glede na to, ali je prisotno, null ali manjka.
Zakaj polje dobi atribut #[serde(rename = "...")]?
To se pojavi, ko je preimenovanje camelCase izključeno in ključ JSON ne ustreza generiranem imenu polja Rust snake_case, zato je prvotni ključ ohranjen za deserijalizacijo.
Ali lahko ustvari strukture iz niza na najvišji ravni?
Da. Niz objektov ustvari vzdevek tipa, kot je pub type Root = Vec<Item>;, in strukturo Item, ki zdužuje polja vsakega elementa v nizu.
Ali je moj JSON negdje poslан?
Ne. Ustvarjanje strukture se izvaja v celoti v vašem brskalniku — vaš JSON nikoli ne zapusti vaše naprave.