DT Dev Tools

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 é enviado

Publicidade

Structs 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

  1. Cole o JSONCole um documento JSON ou clique em Load sample.
  2. Ajuste os derivesDefina o nome da struct raiz, a visibilidade dos campos e quais traits derivar.
  3. 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?
Sim. As structs derivam 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?
Campos ausentes ou nulos em alguns exemplos viram Option<T>. Marque Skip serializing None para omiti-los na serialização.
Posso mudar a visibilidade dos campos?
Sim. Escolha campos pub, pub(crate) ou privados e ative ou desative os derives Debug e Clone.
Meu JSON é enviado?
Não. O código é gerado localmente no seu navegador.
Publicidade