logo
GeekFormat

JSON naar Rust

Gratis online tool JSON naar Rust. Plak API-response JSON om automatisch Serde derive structs te genereren, geneste objecten onafhankelijk gesplitst, Vec en Option slim afgeleid, pure lokale browserconversie, geen registratie nodig.

Gerelateerde aanbevelingen

Over JSON naar Rust: JSON-gegevens omzetten naar compileerbare Rust structs

JSON naar Rust is het proces van het converteren van JSON-gegevens naar Rust struct typedefinities.

Deze tool draait lokaal in de browser gebaseerd op quicktype-core.

Type-inferentie is het hart van JSON naar Rust.

Alle berekeningen vinden plaats in de browser, geen gegevens worden naar servers verzonden.

Gegenereerde code wordt typisch gebruikt in Cargo-projecten.

Automatisch gegenereerde code is een startpunt, geen eindpunt.

Toepassingsgevallen

  • REST API integratie
  • Actix-web backend ontwikkeling
  • axum backend ontwikkeling
  • Microservice interface definitie
  • CLI tool ontwikkeling
  • WebAssembly projecten
  • Tauri desktop apps
  • Web scraper data parsing
  • Game ontwikkeling
  • IoT en embedded
  • Databasemigratie
  • Blockchain/Web3
  • Testgegevens constructie
  • Gestructureerde log parsing
  • Configuratiecentrum migratie
  • Cross-language samenwerking
  • Open source SDK onderhoud
  • Rust didactische voorbeelden
  • Veldnaam conversie

Hoe te gebruiken

  1. Plak JSON in de linker editor of upload een bestand
  2. Wacht 400ms op automatische conversie
  3. Als JSON onjuist is klik «JSON repareren»
  4. Klik «Kopiëren» of «Downloaden» om .rs bestand op te slaan
  5. Voeg serde en serde_json afhankelijkheden toe aan Cargo.toml
  6. (Optioneel) Pas veldtypen handmatig aan

Functies

  • Lokale browserconversie
  • Serde-klare uitvoer
  • Slimme type-inferentie
  • Automatische splitsing geneste objecten
  • Automatische Vec en Option afhandeling
  • Actix-web/axum/reqwest klaar
  • Auto-conversie met 400ms debounce
  • JSON foutcorrectie in één klik
  • Kopiëren en downloaden
  • localStorage geschiedenis
  • Responsieve split panelen
  • Voorbeelddata + bestandsupload

Codevoorbeelden

Rust: Actix-web handler ontvangt JSON request body

rust

Gebruik Actix-web 4.x met de gegenereerde struct als web::Json<T> parameter.

// Cargo.toml
// [dependencies]
// actix-web = "4"
// serde = { version = "1", features = ["derive"] }
// serde_json = "1"

use actix_web::{web, App, HttpServer, HttpResponse, Responder};
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
pub struct CreateUserRequest {
    name: String,
    email: String,
    age: i64,
    tags: Vec<String>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct User {
    id: i64,
    name: String,
    email: String,
    age: i64,
    tags: Vec<String>,
}

async fn create_user(payload: web::Json<CreateUserRequest>) -> impl Responder {
    let req = payload.into_inner();
    let user = User { id: 1, name: req.name, email: req.email, age: req.age, tags: req.tags };
    HttpResponse::Ok().json(user)
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| { App::new().route("/users", web::post().to(create_user)) })
    .bind("127.0.0.1:8080")?.run().await
}

Rust: axum routes + reqwest client response parsing

rust

axum server gebruikt Json<T> extractor, reqwest client gebruikt .json::<T>().

// Cargo.toml
// axum = "0.7"
// tokio = { version = "1", features = ["full"] }
// serde = { version = "1", features = ["derive"] }
// reqwest = { version = "0.12", features = ["json"] }

use axum::{routing::get, Json, Router};
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Address { city: String, zip: String }

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct User { id: i64, name: String, email: String, address: Address, tags: Vec<String> }

async fn get_user() -> Json<User> {
    Json(User { id:1, name:"Alice".into(), email:"a@b.com".into(), address: Address{city:"Beijing".into(),zip:"100000".into()}, tags:vec!["rust".into(),"axum".into()] })
}

#[tokio::main]
async fn main() {
    let app = Router::new().route("/user", get(get_user));
    let listener = tokio::net::TcpListener::bind("127.0.0.1:8080").await.unwrap();
    axum::serve(listener, app).await.unwrap();
}

Veelgestelde vragen

Hoe converteer ik JSON naar een Rust struct?

Plak JSON in de linker editor, de tool genereert automatisch Rust code.

Bevat de gegenereerde Rust code serde annotaties?

Ja, inclusief #[derive(Serialize, Deserialize)] en use statements.

Welke JSON-datastructuren worden ondersteund?

Alle geldige JSON-structuren: primitieve typen, arrays, geneste objecten.

Hoe worden JSON-typen toegewezen aan Rust-typen?

Strings→String, integers→i64, floats→f64, booleans→bool, arrays→Vec<T>, geneste objecten→onafhankelijke struct, null→Option<serde_json::Value>.

Welk type genereren null-waarden?

Null-waarden genereren Option<serde_json::Value>.

Worden arrays geconverteerd naar Vec?

Ja, JSON arrays worden Vec<T>.

Hoe worden geneste objecten behandeld?

Elk genest object genereert een onafhankelijke struct.

Kan ik de naam van de gegenereerde struct aanpassen?

Ja, wijzig namen handmatig na generatie.

Kan de gegenereerde code direct in een Cargo project worden gebruikt?

Ja, voeg serde en serde_json toe aan Cargo.toml.

Kan het voor Actix-web/axum worden gebruikt?

Ja, direct als web::Json<T> of Json<T> parameter.

Ondersteunt het Tauri command parameters?

Ja, gebruik als #[tauri::command] parametertype.

Ondersteunt het precieze typen zoals chrono::DateTime?

Ja, wijzig typen handmatig na generatie.

Worden gegevens naar servers geüpload?

Nee, alles lokaal in de browser.

Is registratie vereist?

Nee, volledig gratis zonder registratie.

Probleemoplossing

Toont «Voer JSON-gegevens in» of rechterkant leeg

Toont JSON parsing fout

Veldtypen niet nauwkeurig genoeg

Compilatiefout ontbrekende crate serde/serde_json

Woordenlijst

struct
Sleutelwoord in Rust voor het definiëren van samengestelde datatypen.
Serde
Meest populaire serialisatie/deserialisatie framework in het Rust-ecosysteem.
Vec<T>
Dynamisch arraytype in de Rust standaardbibliotheek.
Option<T>
Optioneel waardetype in de Rust standaardbibliotheek.
Cargo
Officieel build-systeem en pakketbeheerder van Rust.
serde_json
Serde framework crate specifiek voor JSON-verwerking.
Serialize
Serialisatie-trait van Serde.
Deserialize
Deserialisatie-trait van Serde.
quicktype-core
Meertalige type-inferentie en codegeneratie bibliotheek.
chrono
Meest populaire datum/tijd bibliotheek in het Rust-ecosysteem.
no_std
Rust compilatiemodus die de standaardbibliotheek uitschakelt.
tokio
Meest populaire async runtime in het Rust-ecosysteem.

Referentietabel JSON-typen → Rust-typen

De tool leidt automatisch de corresponderende Rust-typen af:

Voorbeeld JSONGegenereerd Rust-typeBeschrijving
nullOption<serde_json::Value>Null-waarde, Option als fallback
true / falseboolJSON booleans → bool
42i64JSON integers → i64
3.14f64JSON floats → f64
"hello"StringJSON strings → String
["a","b"]Vec<String>String arrays → Vec<String>
[1,2,3]Vec<i64>Integer arrays → Vec<i64>
[{...},{...}]Vec<Item>Object arrays → Vec<Item>
[]Vec<serde_json::Value>Lege array
{...} genest objectonafhankelijke structGeneste objecten genereren onafhankelijke struct

Privacy & Security

Alle bewerkingen van deze JSON naar Rust tool vinden volledig lokaal plaats in de browser: JSON parsing, Rust codegeneratie en bestandsdownloads worden allemaal client-side uitgevoerd via de quicktype-core WebAssembly module; geen JSON-inhoud, geüploade bestanden of gegenereerde code wordt via het netwerk naar servers verzonden.

Authoritative References