Conversor JSON para struct Rust
Cole JSON e obtenha structs serde idiomáticas do Rust na hora, 100% no navegador. Tipagem correta i64/u64/f64, Option para nulos, #[serde(rename)] para camelCase. Grátis.
Opções
O que é conversão de JSON para Rust?
A conversão de JSON para Rust transforma uma amostra de JSON em structs Rust prontos para compilar com as macros #[derive(Serialize, Deserialize)] do serde, para que você nunca escreva à mão o código repetitivo de desserialização para respostas de API ou arquivos de configuração. Este gerador rápido de struct Rust infere tipos numéricos corretos, marca campos ausentes como Option e adiciona #[serde(rename)] para chaves que não estão em snake_case — tudo 100% no seu navegador.
Exemplos
Resposta de 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>,
}
Um payload REST típico torna-se um struct pronto para serde que você pode inserir diretamente no seu cliente. Números inferem i64, arrays tornam-se Vec<String>.
Objeto aninhado
{"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,
}
Objetos aninhados tornam-se structs separados e nomeados (Owner) referenciados por campo — formatos idênticos são deduplicados.
Array de objetos (campo opcional)
{"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>,
}
Arrays de objetos são mesclados em um único struct de elemento. Chaves ausentes em alguns itens tornam-se Option<String> — sem necessidade de #[serde(default)].
Chaves em 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,
}
Os campos tornam-se snake_case com #[serde(rename)] mapeando de volta para a chave JSON original. Chaves já em snake, como login, não recebem rename.
Como converter JSON para Rust
- 1
Cole seu JSON
Insira um objeto JSON, array ou resposta de API no campo de entrada. A conversão começa instantaneamente.
- 2
Ajuste a saída
Renomeie o struct raiz e alterne os derives serde, Debug e Clone ou a visibilidade pub para combinar com o estilo do seu crate.
- 3
Copie ou baixe
Pegue o Rust gerado com um clique e cole-o diretamente no seu projeto.
Common Use Cases
- Clientes de API tipados
- Transforme uma resposta de exemplo de REST ou GraphQL em structs serde para um cliente reqwest ou semelhante, sem escrever código repetitivo de desserialização à mão.
- Análise de configuração e fixtures
- Gere structs para arquivos de configuração JSON, fixtures de teste ou payloads de webhook que você precisa desserializar com serde_json.
- Prototipagem rápida
- Cole um payload desconhecido para ver sua estrutura instantaneamente como tipos Rust — uma forma rápida de explorar uma nova API antes de integrá-la.
Como a conversão funciona
- Inferência estrutural
- Cada objeto torna-se um struct nomeado; formatos idênticos são deduplicados, então você obtém um único struct, não cópias. Arrays de objetos são mesclados chave por chave, e chaves ausentes em alguns itens tornam-se Option<T>.
- Tipagem numérica correta
- Inteiros viram i64, sobem para u64 além de i64::MAX e recorrem a f64 além de u64. Floats são detectados pelo token (1.0, 2e3), então a desserialização do serde nunca falha por uma incompatibilidade de float em inteiro.
- Identificadores idiomáticos e compiláveis
- As chaves viram campos snake_case com #[serde(rename)] de volta à chave original; palavras-chave do Rust, nomes duplicados e chaves que não são identificadores são saneados, então a saída sempre compila.
- 100% no lado do cliente
- A análise e a geração rodam no seu navegador sem chamadas de rede, então seus dados permanecem privados.
Dicas para structs Rust limpos
- Nomeie seu struct raiz
- Defina um nome de raiz significativo (por exemplo, User, ApiResponse) em vez do padrão Root para um código legível.
- Adicione serde_json apenas quando necessário
- serde_json::Value aparece em arrays vazios ou de tipos mistos e em campos que só têm null. Dê a esses campos um tipo concreto a partir de uma amostra mais rica, se possível, ou adicione serde_json ao Cargo.toml.
- Revise Option vs. obrigatório
- Os campos são marcados como Option<T> apenas quando uma amostra os omite. Cole um payload representativo para que a ferramenta infira com precisão os campos obrigatórios e opcionais.
Perguntas frequentes
Como converter JSON para um struct Rust?
Ele gera derives serde? Preciso de serde e serde_json?
Como uso o struct gerado para fazer o parse de JSON?
Como campos opcionais e null são tratados?
Como ele lida com chaves em camelCase e palavras-chave do Rust?
Ele pode usar #[serde(rename_all)] em vez de renames por campo?
Qual tipo numérico do Rust ele usa?
Como datas e carimbos de data e hora são tipados?
Como lidar com objetos de chaves dinâmicas ou desconhecidas?
Meus dados JSON são privados e seguros?
Posso gerar structs Rust simples sem serde?
A ferramenta é grátis? Preciso de uma conta?
Ferramentas relacionadas
Ver todas as ferramentas →Decodificador e Codificador Base64
Codificação e Formatação
Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.
Conversor de Base64 para Imagem
Codificação e Formatação
Decodifique uma string Base64 ou data URI de volta para imagem no navegador. Pré-visualize, leia dimensões e MIME, e baixe como PNG, JPG, GIF, SVG. Sem upload.
Conversor CSV para JSON
Codificação e Formatação
Converta CSV para JSON no navegador. RFC 4180, inferência de tipos, cabeçalho, seguro para inteiros grandes. 100% privado, sem upload.
Conversor de .env para JSON
Codificação e Formatação
Cole um arquivo .env e obtenha JSON na hora. Suas senhas, chaves de API e tokens nunca saem do navegador — 100% privado, sem upload, analisador dotenv grátis.
Decodificador de Entidades HTML — Unescape HTML
Codificação e Formatação
Decodifique entidades HTML e faça unescape de HTML online — grátis, sem cadastro, 100% no seu navegador. Converte referências nomeadas, decimais & hex de volta em caracteres; nada é enviado.
Codificador de Entidades HTML — Escapar HTML
Codificação e Formatação
Codifique entidades HTML e escape caracteres especiais (< > & " ') online — grátis, sem cadastro, 100% no seu navegador. Saída nomeada, decimal ou hex; nada é enviado.