DocumentosImagensMídiaFerramentas PDF

JSON para Rust Struct Online

Gere structs Rust com serde a partir de JSON, grátis, no seu navegador.

Processed in your browser

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.

Três passos, sem complicação

1

Cole seu JSON

Cole o JSON que você quer modelar. Pode ser um objeto aninhado, um array ou qualquer estrutura JSON válida.

2

Geração instantânea

A ferramenta gera structs Rust com derivações serde automaticamente, seguindo as convenções snake_case.

3

Copie o código

Copie o código gerado e adicione a dependência serde ao seu Cargo.toml para usá-lo diretamente.

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.