JSON a Rust
Sense contingut
Eina en línia gratuïta JSON a Rust. Enganxa JSON de resposta d'API per generar automàticament structs amb derive Serde, objectes anidats dividits independentment, Vec i Option deduïts intel·ligentment, conversió local pura al navegador, sense necessitat de registre.
Relacionats
Sobre JSON a Rust: Convertir dades JSON en structs Rust compilables
JSON a Rust és el procés de convertir dades en format JSON en definicions de tipus struct Rust.
Aquesta eina s'executa localment al navegador basada en quicktype-core.
La inferència de tipus és el cor de JSON a Rust.
Tots els càlculs passen al navegador, cap dada s'envia a servidors.
El codi generat s'utilitza típicament en projectes Cargo.
El codi generat automàticament és un punt de partida, no un punt final.
Casos d'ús
- Integració REST API
- Desenvolupament backend Actix-web
- Desenvolupament backend axum
- Definició d'interfície de microserveis
- Desenvolupament d'eines CLI
- Projectes WebAssembly
- Apps d'escriptori Tauri
- Parsing de dades de web scraper
- Desenvolupament de jocs
- IoT i sistemes encastats
- Migració de bases de dades
- Blockchain/Web3
- Construcció de dades de prova
- Parsing de logs estructurats
- Migració de centre de configuració
- Col·laboració cross-language
- Manteniment SDK open source
- Exemples didàctics Rust
- Conversió de noms de camp
Com usar-ho
- Enganxa JSON a l'editor de l'esquerra o carrega un fitxer
- Espera 400ms per a la conversió automàtica
- Si el JSON està mal format fes clic a «Repara JSON»
- Fes clic a «Copiar» o «Descarrega» per guardar el fitxer .rs
- Afegeix dependències serde i serde_json a Cargo.toml
- (Opcional) Ajusta manualment els tipus de camp
Característiques
- Conversió local al navegador
- Sortida preparada per a Serde
- Inferència intel·ligent de tipus
- Divisió automàtica d'objectes anidats
- Gestió automàtica de Vec i Option
- Llest per a Actix-web/axum/reqwest
- Auto-conversió amb debounce de 400ms
- Correcció d'errors JSON en un clic
- Copiar i descarregar
- Historial localStorage
- Panells dividits responsius
- Dades d'exemple + càrrega de fitxers
Exemples de codi
Rust: Handler Actix-web rep cos de petició JSON
rustUtilitza Actix-web 4.x amb la struct generada com a paràmetre web::Json<T>.
// 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: Rutes axum + parsing de resposta client reqwest
rustEl servidor axum utilitza l'extractor Json<T>, el client reqwest utilitza .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();
}Preguntes freqients
Com converteixo JSON a una struct Rust?
Enganxa JSON a l'editor de l'esquerra, l'eina genera automàticament codi Rust.
El codi Rust generat inclou anotacions serde?
Sí, inclou #[derive(Serialize, Deserialize)] i les instruccions use.
Quines estructures JSON són compatibles?
Totes les estructures JSON vàlides: tipus primitius, arrays, objectes anidats.
Com es mapegen els tipus JSON als tipus Rust?
Cadenes→String, enters→i64, floats→f64, booleans→bool, arrays→Vec<T>, objectes anidats→struct independent, null→Option<serde_json::Value>.
Quin tipus generen els valors null?
Els valors null generen Option<serde_json::Value>.
Els arrays es converteixen a Vec?
Sí, els arrays JSON es converteixen a Vec<T>.
Com es tracten els objectes anidats?
Cada objecte anidat genera una struct independent.
Puc personalitzar el nom de la struct generada?
Sí, modifica els noms manualment després de la generació.
El codi generat es pot utilitzar directament en un projecte Cargo?
Sí, afegeix serde i serde_json a Cargo.toml.
Es pot utilitzar per a Actix-web/axum?
Sí, directament com a paràmetre web::Json<T> o Json<T>.
Dóna suport a paràmetres de comandament Tauri?
Sí, utilitza com a tipus de paràmetre #[tauri::command].
Dóna suport a tipus precisos com chrono::DateTime?
Sí, modifica els tipus manualment després de la generació.
Les dades s'envien a servidors?
No, tot s'executa localment al navegador.
Cal registrar-se?
No, completament gratuït sense registre.
Solució de problemes
Mostra «Introdueix dades JSON» o costat dret buit
Mostra error de parsing JSON
Tipus de camp no prou precisos
Error de compilació crate serde/serde_json faltant
Glossari
- struct
- Paraula clau a Rust per definir tipus de dades compostos.
- Serde
- Framework de serialització/deserialització més popular a l'ecosistema Rust.
- Vec<T>
- Tipus d'array dinàmic a la biblioteca estàndard Rust.
- Option<T>
- Tipus de valor opcional a la biblioteca estàndard Rust.
- Cargo
- Sistema de build oficial i gestor de paquets de Rust.
- serde_json
- Crate del framework Serde específic per a processament JSON.
- Serialize
- Trait de serialització de Serde.
- Deserialize
- Trait de deserialització de Serde.
- quicktype-core
- Biblioteca d'inferència de tipus i generació de codi multillenguatge.
- chrono
- Biblioteca de data/hora més popular a l'ecosistema Rust.
- no_std
- Mode de compilació Rust que desactiva la biblioteca estàndard.
- tokio
- Runtime asíncron més popular a l'ecosistema Rust.
Taula de referència tipus JSON → tipus Rust
L'eina dedueix automàticament els tipus Rust corresponents:
| Exemple JSON | Tipus Rust generat | Descripció |
|---|---|---|
null | Option<serde_json::Value> | Valor null, Option com a fallback |
true / false | bool | Booleans JSON → bool |
42 | i64 | Enters JSON → i64 |
3.14 | f64 | Floats JSON → f64 |
"hello" | String | Cadenes JSON → String |
["a","b"] | Vec<String> | Arrays de cadenes → Vec<String> |
[1,2,3] | Vec<i64> | Arrays d'enters → Vec<i64> |
[{...},{...}] | Vec<Item> | Arrays d'objectes → Vec<Item> |
[] | Vec<serde_json::Value> | Array buit |
{...} objecte anidat | struct independent | Objectes anidats generen struct independent |
Privacy & Security
Totes les operacions d'aquesta eina JSON a Rust passen completament de forma local al navegador: el parsing JSON, la generació de codi Rust i la descàrrega de fitxers s'executen totes al costat del client mitjançant el mòdul WebAssembly quicktype-core; cap contingut JSON, fitxers carregats o codi generat s'envia per la xarxa a servidors.
Authoritative References
- Comprimir JSON
- CSV a JSON
- JSON a CSV
- JSON Diff
- JSON Escape / Unescape
- Aplanar JSON
- JSON Formatter
- Generador de JSON
- Consulta JSONPath
- Combinar JSON
- Reparació JSON
- Validador d'Esquema JSON
- Ordenar JSON
- JSON Stringify
- JSON a HTML
- JSON a Java
- JSON a Markdown
- JSON a SQL
- JSON a TOML
- JSON a TypeScript
- XML a JSON
- Converteix JSON a XML
- YAML a JSON
- JSON → YAML
- JSON a Python
- JSON a Go
- JSON a Rust
- JSON a Swift
- JSON a C#
- JSON a C++
- JSON a PHP