Converter JSON para Rust struct (serde) — Gerador de structs
Converta JSON em structs Rust com derives serde Serialize/Deserialize, Option<T> para campos opcionais e nomes snake_case. Grátis, no seu navegador.
🔒 Executa completamente no seu navegador — nada é enviadoStructs Rust para serde, geradas a partir de JSON
O serde torna o JSON em Rust rápido e seguro, mas só depois que você escreve structs que correspondam exatamente aos dados. Este conversor de JSON para Rust as escreve para você. Cole um exemplo e cada objeto vira uma struct com derive de Serialize e Deserialize, as chaves viram nomes de campo idiomáticos em snake_case com atributos #[serde(rename)] quando necessário, objetos aninhados viram structs separadas, arrays viram Vec<T> e valores ausentes ou nulos em algum ponto do exemplo são envolvidos em Option<T>. Inteiros e números de ponto flutuante são diferenciados como i64 e f64.
O gerador é construído sobre o quicktype, que mescla todos os elementos de cada array antes de escolher um tipo. Isso importa mais em Rust do que na maioria das linguagens: uma única chave inesperada ou um null faz a desserialização falhar, então capturar os campos opcionais de antemão economiza tempo de depuração.
Visibilidade e derives
Escolha a visibilidade dos campos conforme o uso dos tipos — pub para uma crate de modelos compartilhada, pub(crate) para módulos internos ou campos privados quando quiser adicionar seus próprios construtores. Os derives Debug e Clone vêm ativados por padrão porque quase todo modelo precisa deles; desative-os para uma saída mais enxuta. Ative Skip serializing None para adicionar skip_serializing_if, de modo que os campos None desapareçam do JSON de saída em vez de serem escritos como null. Lembre-se de adicionar o serde com o recurso derive e o serde_json ao seu Cargo.toml.
Como obter tipos precisos
Use um exemplo com vários itens no array e campos opcionais preenchidos. Arrays vazios e nulls não trazem informação de tipo e recorrem a serde_json::Value, que você geralmente vai querer substituir. Depois de gerar, execute o rustfmt, revise a largura dos inteiros (um ID pode caber em u32) e transforme campos de string com um conjunto fixo de valores em enums com #[serde(rename_all)]. Tudo roda localmente no seu navegador, então payloads privados nunca são enviados.
Como usar
- Cole o JSONCole um documento JSON ou clique em Load sample.
- Ajuste os derivesDefina o nome da struct raiz, a visibilidade dos campos e quais traits derivar.
- Copie as structsCopie o código Rust ou baixe um arquivo .rs e adicione o serde ao Cargo.toml.
Perguntas frequentes
A saída funciona com o serde?
Serialize e Deserialize, e os campos recebem #[serde(rename = "...")] sempre que o nome em Rust difere da chave JSON.Como os campos opcionais são representados?
Option<T>. Marque Skip serializing None para omiti-los na serialização.Posso mudar a visibilidade dos campos?
pub, pub(crate) ou privados e ative ou desative os derives Debug e Clone.