Konwerter JSON na Rust — Generator struktur (serde)
Konwertuj JSON na struktury Rust online z derive serde Serialize/Deserialize, Option<T> dla pól opcjonalnych i nazwami snake_case. Za darmo, w przeglądarce.
🔒 Działa całkowicie w Twojej przeglądarce — nic nie jest przesyłaneStruktury Rust dla serde, wygenerowane z JSON
Serde sprawia, że JSON w Rust jest szybki i bezpieczny, ale dopiero gdy napiszesz struktury dokładnie odpowiadające danym. Ten konwerter JSON na Rust pisze je za Ciebie. Wklej przykład, a każdy obiekt stanie się strukturą z derive Serialize i Deserialize, klucze zamienią się w idiomatyczne nazwy pól w snake_case z atrybutami #[serde(rename)] tam, gdzie to potrzebne, zagnieżdżone obiekty staną się osobnymi strukturami, tablice — typem Vec<T>, a wartości nieobecne lub równe null gdziekolwiek w przykładzie zostaną opakowane w Option<T>. Liczby całkowite i zmiennoprzecinkowe są rozróżniane jako i64 i f64.
Generator opiera się na quicktype, który łączy wszystkie elementy każdej tablicy, zanim wybierze typ. W Ruście ma to większe znaczenie niż w większości języków: jeden nieoczekiwany klucz lub null powoduje błąd deserializacji, więc uwzględnienie pól opcjonalnych z góry oszczędza czas na debugowanie.
Widoczność i derive
Wybierz widoczność pól zgodnie ze sposobem użycia typów — pub dla współdzielonego crate’a z modelami, pub(crate) dla modułów wewnętrznych albo pola prywatne, gdy chcesz dodać własne konstruktory. Derive Debug i Clone są domyślnie włączone, ponieważ potrzebuje ich prawie każdy model; wyłącz je, aby uzyskać szczuplejszy wynik. Włącz Skip serializing None, aby dodać skip_serializing_if, dzięki czemu pola None znikają z wychodzącego JSON-a zamiast być zapisywane jako null. Pamiętaj, aby dodać do Cargo.toml serde z funkcją derive oraz serde_json.
Jak uzyskać dokładne typy
Użyj przykładu z kilkoma elementami tablicy i wypełnionymi polami opcjonalnymi. Puste tablice i wartości null nie niosą informacji o typie i powodują powrót do serde_json::Value, który zwykle zechcesz zastąpić. Po wygenerowaniu uruchom rustfmt, sprawdź szerokości liczb całkowitych (identyfikator może się mieścić w u32) i zamień pola tekstowe o stałym zbiorze wartości na enumy z #[serde(rename_all)]. Wszystko działa lokalnie w Twojej przeglądarce, więc prywatne dane nigdy nie są przesyłane.
Jak używać
- Wklej JSONWklej dokument JSON lub kliknij Load sample.
- Dostosuj deriveUstaw nazwę struktury głównej, widoczność pól i traity do wyderywowania.
- Skopiuj strukturySkopiuj kod Rust lub pobierz plik .rs i dodaj serde do Cargo.toml.
Najczęściej zadawane pytania
Czy wynik działa z serde?
Serialize i Deserialize, a pola dostają #[serde(rename = "...")] wszędzie tam, gdzie nazwa w Ruście różni się od klucza JSON.Jak reprezentowane są pola opcjonalne?
Option<T>. Zaznacz Skip serializing None, aby pomijać je podczas serializacji.Czy mogę zmienić widoczność pól?
pub, pub(crate) lub prywatne oraz włącz bądź wyłącz derive Debug i Clone.