Preskočiť na obsah
100% lokálne

JSON na Rust štruktúru

Preveďte dokument JSON na Rust štruktúry pripravené na serde.

Vstup
Výstup

JSON na Rust štruktúru

Vložte JSON objekt alebo pole a nástroj generuje zodpovedajúce Rust štruktúry, priamo pripravené na projekt, ktorý používa serde na serializáciu. Šetrí sa tým únavne ručné písanie typov polí a atribútov derive zakaždým, keď sa API odpoveď alebo config súbor zmení.

Volby ovládajú vzhľad generovaného kódu. Vyberte si, ktoré vlastnosti máte odvodzovať — Debug, Clone, Serialize, Deserialize, PartialEq — a či chcete pridať #[serde(rename_all = "camelCase")], aby idiomatické snake_case Rust polia stále deserializovali camelCase JSON kľúče správne. Null hodnoty sa môžu automaticky stať Option<T> a na celé čísla si môžete vybrať i32, i64 alebo u64 a na text reťazec alebo požičaný &str (s lifetime). Vnorené objekty môžu generovať ako samostatné štruktúry na úrovni projektu alebo byť zabalené vo vlastnom pub mod a polia môžu byť verejné alebo súkromné.

Polia v poliach objektov sa zlúčia do jednej štruktúry: pole, ktoré existuje len na niektorých položkách, sa automaticky stane Option<T>, takže štruktúra generovaná z niekoľkých vzorových záznamov stále zodpovedá úplnému súboru údajov. Názvy polí sa konvertujú na snake_case, Rust kľúčové slová sa zmenia na raw identifikátory ako r#type a názov, ktorý sa nemožno čisto reprezentovať, si zachová svoj pôvodný kľúč cez #[serde(rename = "...")] namiesto toho.

Všetko beží lokálne vo vašom prehliadači — váš JSON nikdy nikam nie je nahravaný, je bezpečné vložiť skutočné API payloady alebo údaje konfigurácie. Skopírujte generovaný kód, stiahnite si ho ako .txt súbor alebo pošlite výstup späť na vstup na ďalšie spracovanie.

Časté otázky

Či nainštaluje serde alebo ho pridá do Cargo.toml?
Nie. Generuje len kód štruktúry. Pridajte serde s vlastnosťou derive do svojho Cargo.toml oddelene: serde = { version = "1", features = ["derive"] }.
Čo sa stane s poľom, ktoré je null v niektorých záznamoch a v iných je prítomné?
Keď je voľba "Zabaľovať null polia do Option<T>" zapnutá, toto pole sa stane Option<T>, aby sa deserializovalo správne bez ohľadu na to, či je prítomné, null alebo chýbajúce.
Prečo pole získa atribút #[serde(rename = "...")]?
To sa objavuje, keď je renomovanie camelCase vypnuté a JSON kľúč nezodpovedá generovanému názvu poľa snake_case Rust, takže presný pôvodný kľúč sa zachová na deserializáciu.
Môže generovať štruktúry z poľa na najvyššej úrovni?
Áno. Pole objektov vyprodukuje alias typu ako pub type Root = Vec<Item>; plus štruktúru Item, zlučujúc polia naprieč každým prvkom v poli.
Je môj JSON niekde nahravaný?
Nie. Generovanie štruktúry beží úplne vo vašom prehliadači — váš JSON nikdy neopustí vaše zariadenie.