JSON para Rust – Gere structs com serde
Converta um JSON em structs Rust com as derives do serde já aplicadas, tipos inferidos e structs aninhadas separadas.
Código gerado
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Endereco {
pub cidade: String,
pub uf: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub nome: String,
pub ativo: bool,
pub saldo: f64,
pub tags: Vec<String>,
pub endereco: Endereco,
#[serde(rename = "ultimoAcesso")]
pub ultimo_acesso: Option<serde_json::Value>,
}
Os tipos são inferidos do exemplo: campos ausentes em parte dos itens de um array viram opcionais, e valores null viram anuláveis. Tudo roda no navegador — o JSON não é enviado a nenhum servidor.
Como usar esta ferramenta
- Cole o JSON de exemplo
- Copie as structs geradas
- Confira as derives Serialize e Deserialize
- Ajuste tipos opcionais e renomeações no projeto
Sobre esta ferramenta
O que é
serde é a biblioteca padrão de serialização em Rust. As derives Serialize e Deserialize geram em tempo de compilação o código que converte a struct de e para JSON.
Quando usar
- Consumir uma API REST em um serviço Rust
- Ler arquivo de configuração em JSON
- Desserializar mensagens de uma fila
- Modelar payload de webhook
- Partir de um exemplo real em vez de escrever a struct do zero
Perguntas frequentes
- Como tratar campo que pode faltar?
- Declare o campo como Option<T>. O serde preenche com None quando a chave não vem no JSON, em vez de falhar a desserialização.
- E quando o nome do campo tem hífen?
- Use o atributo #[serde(rename = "nome-original")] no campo, já que hífen não é válido em identificador Rust.
- Como converter snake_case e camelCase?
- O atributo #[serde(rename_all = "camelCase")] na struct converte todos os campos de uma vez, sem precisar renomear um a um.