JSON para Rust
Nenhum conteúdo ainda
Ferramenta online gratuita JSON para Rust. Cole JSON de resposta de API para gerar automaticamente structs com derive Serde, objetos aninhados divididos independentemente, Vec e Option deduzidos inteligentemente, conversão local pura no navegador, sem registro necessário.
Sugestões Relacionadas
Sobre JSON para Rust: Converter dados JSON em structs Rust compiláveis
JSON para Rust é o processo de converter dados no formato JSON em definições de tipo struct Rust.
Esta ferramenta executa localmente no navegador baseada em quicktype-core.
Inferência de tipos é o coração de JSON para Rust.
Todos os cálculos acontecem no navegador, nenhum dado é enviado para servidores.
O código gerado é tipicamente usado em projetos Cargo.
Código gerado automaticamente é um ponto de partida, não um ponto final.
Casos de uso
- Integração REST API
- Desenvolvimento backend Actix-web
- Desenvolvimento backend axum
- Definição de interface de microsserviços
- Desenvolvimento de ferramentas CLI
- Projetos WebAssembly
- Apps desktop Tauri
- Parsing dados web scraper
- Desenvolvimento de jogos
- IoT e embarcados
- Migração de banco de dados
- Blockchain/Web3
- Construção de dados de teste
- Parsing de logs estruturados
- Migração de centro de configuração
- Colaboração cross-language
- Manutenção SDK open source
- Exemplos didáticos Rust
- Conversão de nomes de campo
Como Usar
- Cole JSON no editor à esquerda ou carregue um arquivo
- Aguarde 400ms para conversão automática
- Se JSON estiver malformado clique «Reparar JSON»
- Clique «Copiar» ou «Baixar» para salvar arquivo .rs
- Adicione dependências serde e serde_json ao Cargo.toml
- (Opcional) Ajuste manualmente os tipos de campo
Recursos
- Conversão local no navegador
- Saída pronta para Serde
- Inferência inteligente de tipos
- Divisão automática de objetos aninhados
- Tratamento automático de Vec e Option
- Pronto para Actix-web/axum/reqwest
- Auto-conversão com debounce de 400ms
- Correção de erros JSON em um clique
- Copiar e baixar
- Histórico localStorage
- Painéis responsivos
- Dados de exemplo + upload de arquivo
Exemplos de Código
Rust: Handler Actix-web recebendo body requisição JSON
rustUse Actix-web 4.x com a struct gerada como parâmetro 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: Rotas axum + parsing resposta cliente reqwest
rustServidor axum usa extrator Json<T>, cliente reqwest usa .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();
}Perguntas frequentes
Como converto JSON para uma struct Rust?
Cole JSON no editor à esquerda, a ferramenta gera automaticamente o código Rust.
O código Rust gerado inclui anotações serde?
Sim, inclui #[derive(Serialize, Deserialize)] e as instruções use.
Quais estruturas JSON são suportadas?
Todas as estruturas JSON válidas: tipos primitivos, arrays, objetos aninhados.
Como os tipos JSON são mapeados para tipos Rust?
Strings→String, inteiros→i64, floats→f64, booleanos→bool, arrays→Vec<T>, objetos aninhados→struct independente, null→Option<serde_json::Value>.
Que tipo valores null geram?
Valores null geram Option<serde_json::Value>.
Arrays são convertidos para Vec?
Sim, arrays JSON se tornam Vec<T>.
Como objetos aninhados são tratados?
Cada objeto aninhado gera uma struct independente.
Posso personalizar o nome da struct?
Sim, modifique manualmente os nomes após a geração.
O código gerado pode ser usado diretamente em projeto Cargo?
Sim, adicione serde e serde_json ao Cargo.toml.
Pode ser usado para Actix-web/axum?
Sim, diretamente como parâmetro web::Json<T> ou Json<T>.
Suporta parâmetros de comando Tauri?
Sim, use como tipo de parâmetro #[tauri::command].
Suporta tipos precisos como chrono::DateTime?
Sim, modifique manualmente os tipos após a geração.
Os dados são enviados para servidores?
Não, tudo executa localmente no navegador.
É necessário registro?
Não, completamente gratuito sem registro.
Solução de Problemas
Mostra «Insira dados JSON» ou lado direito vazio
Mostra erro de parsing JSON
Tipos de campo não precisos o suficiente
Erro de compilação crate serde/serde_json faltando
Glossário
- struct
- Palavra-chave em Rust para definir tipos de dados compostos.
- Serde
- Framework de serialização/deserialização mais popular no ecossistema Rust.
- Vec<T>
- Tipo array dinâmico na biblioteca padrão Rust.
- Option<T>
- Tipo valor opcional na biblioteca padrão Rust.
- Cargo
- Sistema de build e gerenciador de pacotes oficial do Rust.
- serde_json
- Crate do framework Serde específico para processamento JSON.
- Serialize
- Trait de serialização do Serde.
- Deserialize
- Trait de deserialização do Serde.
- quicktype-core
- Biblioteca de inferência de tipos e geração de código multilíngue.
- chrono
- Biblioteca de data/hora mais popular no ecossistema Rust.
- no_std
- Modo de compilação Rust que desabilita a biblioteca padrão.
- tokio
- Runtime assíncrono mais popular no ecossistema Rust.
Tabela de referência tipos JSON → tipos Rust
A ferramenta deduce automaticamente os tipos Rust correspondentes:
| Exemplo JSON | Tipo Rust gerado | Descrição |
|---|---|---|
null | Option<serde_json::Value> | Valor null, Option como fallback |
true / false | bool | Booleanos JSON → bool |
42 | i64 | Inteiros JSON → i64 |
3.14 | f64 | Floats JSON → f64 |
"hello" | String | Strings JSON → String |
["a","b"] | Vec<String> | Array de strings → Vec<String> |
[1,2,3] | Vec<i64> | Array de inteiros → Vec<i64> |
[{...},{...}] | Vec<Item> | Array de objetos → Vec<Item> |
[] | Vec<serde_json::Value> | Array vazio |
{...} objeto aninhado | struct independente | Objetos aninhados geram struct independente |
Privacy & Security
Todas as operações desta ferramenta JSON para Rust acontecem completamente localmente no navegador: parsing JSON, geração de código Rust e download de arquivos são executados no lado do cliente através do módulo WebAssembly quicktype-core; nenhum conteúdo JSON, arquivos carregados ou código gerado é enviado pela rede para servidores.
Authoritative References
- Comprimir JSON
- CSV para JSON
- JSON para CSV
- JSON Diff
- JSON Escape / Unescape
- Achatamento de JSON
- Formatador JSON
- Gerador de JSON
- Consulta JSONPath
- Mesclar JSON
- Reparar JSON
- Validador JSON Schema
- Ordenar JSON
- JSON Stringify
- JSON para HTML
- JSON para Java
- JSON to Markdown
- JSON para SQL
- JSON para TOML
- JSON para TypeScript
- XML para JSON
- JSON para XML
- YAML para JSON
- JSON para YAML
- JSON para Python
- JSON para Go
- JSON para Rust
- JSON para Swift
- JSON para C#
- JSON para C++
- JSON para PHP