JSON para Rust Struct Online
Gere structs Rust com serde a partir de JSON, grátis, no seu navegador.
Para que serve
De JSON para Rust Struct com serde
Compatível com o ecossistema serde
Gera structs prontos para usar com serde_json, reqwest, Actix-web, Axum e qualquer crate do ecossistema Rust.
100% privado
Seu JSON nunca sai do seu navegador. Sem cadastro, sem telemetria, sem envio a servidores.
Convenções Rust corretas
snake_case automático, Option<T> para nullable, tipos numéricos corretos (i64, f64). Código idiomático.
Instantâneo
Structs gerados em tempo real. Sem botões, sem esperas, sem limites.
Como funciona
Três passos, sem complicação
Cole seu JSON
Cole o JSON que você quer modelar. Pode ser um objeto aninhado, um array ou qualquer estrutura JSON válida.
Geração instantânea
A ferramenta gera structs Rust com derivações serde automaticamente, seguindo as convenções snake_case.
Copie o código
Copie o código gerado e adicione a dependência serde ao seu Cargo.toml para usá-lo diretamente.
Perguntas frequentes
Ficou com dúvidas?
serde (serialization/deserialization) é o framework de serialização mais popular do ecossistema Rust. Converte structs Rust para e a partir de formatos como JSON, YAML, TOML, MessagePack, CBOR e muitos outros. O diferencial do serde é que usa macros em tempo de compilação, significando zero overhead em tempo de execução: o código gerado é tão eficiente quanto se você tivesse escrito a serialização manualmente.
A macro #[derive(Serialize, Deserialize)] em Rust instrui o compilador a gerar automaticamente a implementação das traits Serialize e Deserialize do serde para a struct. Isso elimina a necessidade de escrever código de serialização manualmente. É equivalente a implementar uma interface, mas o código é gerado em tempo de compilação via macros procedurais.
snake_case é a convenção de nomenclatura oficial do Rust para variáveis, campos de structs e funções (definida nas Rust API Guidelines). Porém, APIs REST frequentemente retornam JSON em camelCase. O serde lida com essa incompatibilidade automaticamente com o atributo #[serde(rename_all = camelCase)] no nível da struct, ou #[serde(rename = fieldName)] por campo individual.
Em Rust não existe null — em vez disso, o tipo Option<T> é usado, que pode ser Some(valor) ou None. Quando um campo JSON pode ser null ou ausente, o tipo Rust correspondente é Option<T>, por exemplo Option<String> ou Option<i64>. O serde desserializa automaticamente null como None e ignora campos com None ao serializar (com o atributo #[serde(skip_serializing_if = Option::is_none)]).
Adicione estas linhas ao seu Cargo.toml: serde com versão 1.0 e a feature derive habilitada, e serde_json versão 1.0. A feature derive habilita as macros #[derive(Serialize, Deserialize)]. serde_json fornece serde_json::from_str() para desserialização e serde_json::to_string() para serialização. Estes estão entre os crates mais baixados do ecossistema Rust.
Rust como linguagem mais amada no Stack Overflow, o ecossistema serde e WebAssembly com Rust
Rust foi eleito a linguagem de programação mais amada na Stack Overflow Developer Survey por 9 anos consecutivos (2016-2024). Essa popularidade vem de sua proposta única: segurança de memória sem coletor de lixo (garbage collector), desempenho comparável ao C/C++, e um sistema de tipos que previne em tempo de compilação classes inteiras de bugs como null pointer dereferences, data races e buffer overflows. Cada vez mais projetos em sistemas críticos, CLIs e serviços de alto desempenho estão migrando para Rust.
serde é o pilar da serialização em Rust. Com mais de 300 milhões de downloads no crates.io, é uma das dependências mais presentes no ecossistema. O que torna o serde especial é sua arquitetura de modelo de dados agnóstico ao formato: as structs implementam uma vez contra o modelo de dados abstrato do serde, e os formatos (JSON, YAML, TOML, Bincode, MessagePack etc.) implementam seu próprio adaptador. Isso significa que trocar de JSON para MSGPACK em um projeto Rust muitas vezes é tão simples quanto mudar um crate.
WebAssembly (Wasm) é outra área onde Rust brilha. Com wasm-bindgen e wasm-pack, você pode compilar código Rust para WebAssembly e executá-lo no navegador com desempenho próximo ao nativo. serde_json funciona em targets Wasm sem alterações. Projetos como Figma (seu motor de renderização), Cloudflare Workers e partes do Firefox são escritos em Rust. A ferramenta da convertir.ai usa tecnologia similar: processamento no lado do cliente sem enviar dados ao servidor.