Přeskočit na obsah

JSON na Rust strukturu

Převeďte dokument JSON na Rust struktury připravené na serde.

Vstup
Výstup

JSON na Rust strukturu

Vložte JSON objekt nebo pole a nástroj generuje odpovídající Rust struktury, přímo připravené pro projekt, který používá serde na serializaci. Šetří se tím únavné ruční psaní typů polí a atributů derive pokaždé, když se API odpověď nebo konfigurační soubor změní.

Volby ovládají vzhled generovaného kódu. Vyberte si, které vlastnosti máte odvozovat — Debug, Clone, Serialize, Deserialize, PartialEq — a zda chcete přidat #[serde(rename_all = "camelCase")], aby idiomatické snake_case Rust pole stále deserializovala camelCase JSON klíče správně. Null hodnoty se mohou automaticky stát Option<T> a na celá čísla si můžete vybrat i32, i64 nebo u64 a na text řetězec nebo půjčený &str (s lifetime). Vnořené objekty mohou generovat jako samostatné struktury na úrovni projektu nebo být zabaleny ve vlastním pub mod a pole mohou být veřejné nebo soukromé.

Pole v poli objektů se sloučí do jedné struktury: pole, které existuje jen na některých položkách, se automaticky stane Option<T>, takže struktura generovaná z několika vzorových záznamů stále odpovídá úplnému souboru dat. Názvy polí se převádějí na snake_case, Rust klíčová slova se změní na raw identifikátory jako r#type a název, který se nemůže čistě reprezentovat, si zachová svůj původní klíč prostřednictvím #[serde(rename = "...")] místo toho.

Všechno běží lokálně ve vašem prohlížeči — váš JSON nikdy nikam není nahráván, je bezpečné vložit skutečné API payloady nebo údaje konfigurace. Zkopírujte generovaný kód, stáhněte si ho jako .txt soubor nebo pošlete výstup zpět na vstup k dalšímu zpracování.

Časté dotazy

Zda nainstaluji serde nebo ho přidám do Cargo.toml?
Ne. Generuje pouze kód struktury. Přidejte serde s funkcí derive do vašeho Cargo.toml odděleně: serde = { version = "1", features = ["derive"] }.
Co se stane s polem, které je null v některých záznamech a v jiných je přítomno?
Když je volba "Zabalit null pole do Option<T>" zapnutá, toto pole se stane Option<T>, aby se deserializovalo správně bez ohledu na to, zda je přítomno, null nebo chybí.
Proč pole získá atribut #[serde(rename = "...")]?
To se zobrazuje, když je přejmenování camelCase vypnuto a klíč JSON neodpovídá generovanému názvu pole snake_case Rust, takže se přesný původní klíč zachová pro deserializaci.
Může generovat struktury z pole na nejvyšší úrovni?
Ano. Pole objektů vytvoří alias typu jako pub type Root = Vec<Item>; plus strukturu Item, sloučením polí všech prvků v poli.
Je můj JSON někde nahrán?
Ne. Generování struktury běží zcela ve vašem prohlížeči — váš JSON nikdy neopustí vaše zařízení.