DT Dev Tools

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łane

Reklama

Struktury 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ć

  1. Wklej JSONWklej dokument JSON lub kliknij Load sample.
  2. Dostosuj deriveUstaw nazwę struktury głównej, widoczność pól i traity do wyderywowania.
  3. Skopiuj strukturySkopiuj kod Rust lub pobierz plik .rs i dodaj serde do Cargo.toml.

Najczęściej zadawane pytania

Czy wynik działa z serde?
Tak. Struktury mają derive 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?
Pola, których brakuje lub które mają wartość null w niektórych przykładach, stają się typem Option<T>. Zaznacz Skip serializing None, aby pomijać je podczas serializacji.
Czy mogę zmienić widoczność pól?
Tak. Wybierz pola pub, pub(crate) lub prywatne oraz włącz bądź wyłącz derive Debug i Clone.
Czy mój JSON jest przesyłany?
Nie. Kod jest generowany lokalnie w Twojej przeglądarce.
Reklama