Konwerter JSON na struktury Rust
Wklej JSON i uzyskaj idiomatyczne struktury serde w Rust natychmiast, w 100% w przeglądarce. Poprawne typy i64/u64/f64, Option dla wartości null, #[serde(rename)] dla camelCase. Bezpłatnie.
Opcje
Czym jest konwersja JSON na Rust?
Konwersja JSON na Rust zamienia próbkę JSON w gotowe do skompilowania struktury Rust z makrami #[derive(Serialize, Deserialize)] z serde, dzięki czemu nigdy nie piszesz ręcznie szablonowego kodu deserializacji dla odpowiedzi API czy plików konfiguracyjnych. Ten szybki generator struktur Rust wnioskuje poprawne typy liczbowe, oznacza brakujące pola jako Option i dodaje #[serde(rename)] dla kluczy spoza snake_case — wszystko w 100% w przeglądarce.
Przykłady
Odpowiedź API
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
Typowy ładunek REST staje się gotową dla serde strukturą, którą wstawisz do swojego klienta. Liczby są wnioskowane jako i64, tablice stają się Vec<String>.
Zagnieżdżony obiekt
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
Zagnieżdżone obiekty stają się osobnymi, nazwanymi strukturami (Owner) wskazywanymi przez pole — identyczne kształty są deduplikowane.
Tablica obiektów (pole opcjonalne)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
Tablice obiektów są scalane w jedną strukturę elementu. Klucze brakujące w niektórych elementach stają się Option<String> — bez potrzeby #[serde(default)].
Klucze camelCase
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
Pola stają się snake_case z #[serde(rename)] mapującym z powrotem na oryginalny klucz JSON. Klucze już w snake_case, jak login, nie otrzymują rename.
Jak przekonwertować JSON na struktury Rust
- 1
Wklej swój JSON
Wstaw obiekt JSON, tablicę lub odpowiedź API do pola wejściowego. Konwersja zaczyna się natychmiast.
- 2
Dostrój wynik
Zmień nazwę struktury głównej i przełączaj derywacje serde, Debug i Clone lub widoczność pub, aby dopasować się do stylu swojego crate'a.
- 3
Skopiuj lub pobierz
Przejmij wygenerowany kod Rust jednym kliknięciem i wklej go prosto do swojego projektu.
Common Use Cases
- Typowani klienci API
- Zamień przykładową odpowiedź REST lub GraphQL w struktury serde dla klienta reqwest lub podobnego, bez ręcznego pisania szablonowego kodu deserializacji.
- Parsowanie konfiguracji i fikstur
- Generuj struktury dla plików konfiguracyjnych JSON, fikstur testowych lub ładunków webhooków, które musisz deserializować z serde_json.
- Szybkie prototypowanie
- Wklej nieznany ładunek, aby natychmiast zobaczyć jego kształt jako typy Rust — szybki sposób na poznanie nowego API przed jego podłączeniem.
Jak działa konwersja
- Wnioskowanie strukturalne
- Każdy obiekt staje się nazwaną strukturą; identyczne kształty są deduplikowane, więc otrzymujesz jedną strukturę, a nie kopie. Tablice obiektów są scalane klucz po kluczu, a klucze nieobecne w niektórych elementach stają się Option<T>.
- Poprawne typowanie liczb
- Liczby całkowite są mapowane na i64, awansują do u64 powyżej i64::MAX i przechodzą na f64 powyżej u64. Liczby zmiennoprzecinkowe są rozpoznawane po tokenie (1.0, 2e3), więc deserializacja serde nigdy nie zawodzi na niezgodności typu zmiennoprzecinkowego z całkowitym.
- Idiomatyczne, kompilowalne identyfikatory
- Klucze stają się polami snake_case z #[serde(rename)] wskazującym z powrotem na oryginalny klucz; słowa kluczowe Rust, zduplikowane nazwy i klucze niebędące identyfikatorami są sanityzowane, więc wynik zawsze się kompiluje.
- 100% po stronie klienta
- Parsowanie i generowanie działają w przeglądarce bez wywołań sieciowych, więc twoje dane pozostają prywatne.
Wskazówki dla czystych struktur Rust
- Nazwij swoją strukturę główną
- Ustaw sensowną nazwę główną (np. User, ApiResponse) zamiast domyślnego Root, aby kod był czytelny.
- Dodawaj serde_json tylko wtedy, gdy to konieczne
- serde_json::Value pojawia się przy pustych lub mieszanych tablicach oraz polach zawierających wyłącznie null. Nadaj tym polom konkretny typ na podstawie bogatszej próbki, jeśli możesz, lub dodaj serde_json do Cargo.toml.
- Przejrzyj Option kontra pola wymagane
- Pola są oznaczane jako Option<T> tylko wtedy, gdy próbka je pomija. Wklej reprezentatywny ładunek, aby narzędzie dokładnie wywnioskowało pola wymagane i opcjonalne.
Najczęściej zadawane pytania
Jak przekonwertować JSON na strukturę Rust?
Czy generuje derywacje serde? Czy potrzebuję serde i serde_json?
Jak użyć wygenerowanej struktury do parsowania JSON?
Jak obsługiwane są pola opcjonalne i null?
Jak obsługuje klucze camelCase i słowa kluczowe Rust?
Czy może użyć #[serde(rename_all)] zamiast rename dla każdego pola?
Jakiego typu liczbowego Rust używa?
Jak typowane są daty i znaczniki czasu?
Jak obsłużyć obiekty z dynamicznymi lub nieznanymi kluczami?
Czy moje dane JSON są prywatne i bezpieczne?
Czy mogę generować zwykłe struktury Rust bez serde?
Czy narzędzie jest bezpłatne? Czy potrzebuję konta?
Powiązane narzędzia
Zobacz wszystkie narzędzia →Koder i dekoder Base64
Kodowanie i formatowanie
Zakoduj i zdekoduj Base64 online za darmo. Konwersja w czasie rzeczywistym z pełną obsługą UTF-8 i emoji. 100% w przeglądarce, bez rejestracji.
Konwerter Base64 na obraz
Kodowanie i formatowanie
Zdekoduj ciąg Base64 lub data URI z powrotem na obraz w przeglądarce. Podejrzyj, odczytaj wymiary i MIME, a potem pobierz jako PNG, JPG, GIF, SVG. Bez przesyłania.
Konwerter CSV na JSON
Kodowanie i formatowanie
Konwertuj CSV na JSON w przeglądarce. RFC 4180, wnioskowanie typów, nagłówek, big-int safe. 100% prywatnie, bez wysyłki.
Konwerter .env na JSON
Kodowanie i formatowanie
Wklej plik .env i od razu otrzymaj JSON. Hasła, klucze API i tokeny nigdy nie opuszczają przeglądarki — 100% prywatnie, bez wysyłania, parser dotenv.
Darmowy dekoder encji HTML — unescape HTML
Kodowanie i formatowanie
Dekoduj encje HTML i unescape HTML online — za darmo, bez rejestracji, w 100% w przeglądarce. Zamienia odwołania nazwane, dziesiętne & szesnastkowe z powrotem na znaki; nic nie jest wysyłane.
Darmowy koder encji HTML — escape HTML
Kodowanie i formatowanie
Koduj encje HTML i znaki specjalne (< > & " ') online — za darmo, bez rejestracji, w 100% w przeglądarce. Wynik nazwany, dziesiętny lub szesnastkowy; nic nie jest wysyłane.