UTILS.
100% w przeglądarce
🦀

JSON na struktury Rust Serde

Wygeneruj struktury Rust z derywacjami serde z przykładu JSON, gotowe do Serialize/Deserialize, z Option dla pól nullable i atrybutami rename.

wynik

O tym narzędziu

Narzędzie JSON na struktury Rust Serde konwertuje wklejony przykład JSON w struktury Rust z adnotacjami dla serde, dzięki czemu możesz deserializować ten sam ładunek bez ręcznego pisania każdego pola. Parsuje JSON, rekurencyjnie wnioskuje typy Rust i emituje strukturę #[derive(Serialize, Deserialize, ...)] na obiekt: łańcuchy stają się String, liczby całkowite i64 (lub u64, gdy wszystkie przykłady są nieujemne), inne liczby f64, wartości logiczne bool, tablice Vec<T>, a zagnieżdżone obiekty otrzymują własne struktury PascalCase zdefiniowane przed swoimi rodzicami.

Cała praca odbywa się lokalnie w Twojej przeglądarce za pomocą JSON.parse i czystego JavaScriptu — nic nie jest przesyłane. Pola struktur są konwertowane na snake_case, a za każdym razem, gdy klucz JSON różni się od pola snake_case, narzędzie dodaje #[serde(rename = "originalKey")], aby struktura nadal mapowała się na format transmisji. Klucze nieobecne w niektórych przykładach rodzeństwa lub widziane jako null stają się Option<T> z #[serde(default)], więc deserializacja toleruje ich brak. Puste tablice przechodzą na Vec<serde_json::Value>.

Przełącznik szerokości liczby całkowitej przełącza między liczbami 64-bitowymi (i64/u64, domyślnie) a 32-bitowymi (i32/u32), automatycznie promując do 64 bitów, gdy próbkowana wartość przekracza zakres 32-bitowy. Przełącznik derywacji wybiera między pełnym zestawem (Serialize, Deserialize, Debug, Clone) a minimalnym Serialize, Deserialize. Plik zaczyna się od use serde::{Serialize, Deserialize};. Skopiuj go lub pobierz plik .rs.

Najczęściej zadawane pytania

Jak typy JSON są mapowane na Rust?
string na String, liczba całkowita na i64 (lub u64, gdy każdy przykład jest nieujemny), liczba niecałkowita na f64, wartość logiczna na bool, tablica na Vec<T>, a obiekt na nazwaną strukturę z derywacjami serde. Pola null lub brakujące stają się Option<T> z #[serde(default)].
Kiedy dodawane jest #[serde(rename)]?
Za każdym razem, gdy klucz JSON nie jest równy swojej nazwie pola snake_case — na przykład klucz userName tworzy pole user_name z #[serde(rename = "userName")], więc struktura nadal dokładnie deserializuje oryginalny JSON.
Czy mogę wybrać szerokość liczby całkowitej?
Tak. Przełącznik szerokości emituje liczby 64-bitowe (i64/u64) lub 32-bitowe (i32/u32). Znak podąża za danymi: wszystkie nieujemne przykłady używają typu bez znaku. Wartości poza zakresem 32-bitowym są automatycznie promowane do 64 bitów.
Jakie derywacje są dołączane?
Domyślnie #[derive(Serialize, Deserialize, Debug, Clone)]; opcja minimalna emituje tylko Serialize, Deserialize. Struktury podrzędne są deklarowane przed rodzicami, którzy się do nich odwołują, więc moduł kompiluje się bez zmian.

Więcej narzędzi