Desenvolvedor / Tipos
Conversor de JSON para structs Rust
Transforme um exemplo JSON em structs Rust que derivam Serialize e Deserialize do serde, com campos em snake_case, renomeações, Option para chaves ausentes ou nulas e Vec para arrays.
Conversor de JSON para structs Rust: Cada objeto se torna uma struct com campos públicos. As chaves se tornam snake_case, com #[serde(rename = "…")] quando a grafia no JSON é diferente; palavras-chave do Rust, como type, tornam-se identificadores crus (r#type), que o serde mapeia de volta automaticamente. Chaves ausentes ou nulas em alguns registros se tornam Option<T>, e valores sem um tipo claro se tornam serde_json::Value. A saída para vários exemplos foi compilada, e seu exemplo foi desserializado com serde 1. Roda 100% localmente no seu navegador, sem enviar nenhum arquivo para o servidor.
- Categoria
- Ferramentas para desenvolvedores
- Execuções
- No seu navegador
- Custo
- Grátis · sem cadastro
- Disponibilidade
- Pronto para usar
Roda inteiramente no seu navegador
Rust
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Address {
pub city: String,
pub zip_code: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub user_name: String,
pub avatar_url: String,
pub score: f64,
pub tags: Vec<String>,
pub address: Address,
pub manager_id: Option<i64>,
#[serde(default)]
pub nickname: Option<String>,
}
pub type UserList = Vec<User>;
Requer os crates serde (com o recurso derive) e serde_json. Os nomes dos campos se tornam snake_case, usando #[serde(rename)] quando a chave for diferente; as chaves ausentes ou null em alguns objetos se tornam Option. Os números são i64, a menos que um exemplo tenha uma fração.
Lendo e gravando os dados
Desserialize com serde_json::from_str::<Root>(&text)? e serialize com serde_json::to_string(&value)?. Chaves desconhecidas na entrada são ignoradas por padrão; adicione #[serde(deny_unknown_fields)] a uma struct para rejeitá-las.
Para ver o mesmo exemplo em Go, consulte JSON para Go; para organizar o exemplo primeiro, use o formatador de JSON.
Option e chaves ausentes
Uma chave ausente e um valor null são desserializados como None em um campo Option. Se você precisar diferenciá-los, use Option<Option<T>> com o crate serde_with ou mantenha serde_json::Value nesse campo.
Como usar
- Cole um exemplo JSON, de preferência um array com vários registros típicos.
- Dê um nome ao tipo de nível superior e escolha se os campos None devem ser omitidos durante a serialização.
- Copie as structs para seu crate, que precisa de serde e serde_json.
Privacidade e limitações
O JSON é convertido no seu navegador e nunca é enviado.
Ferramentas relacionadas
Perguntas frequentes
De quais crates preciso?
De serde com o recurso derive e de serde_json: serde = { version = "1", features = ["derive"] } e serde_json = "1" no Cargo.toml.
Por que i64 e f64?
Eles armazenam qualquer número JSON com segurança. Use tipos mais restritos, como u32, u8 ou f32, quando você souber o intervalo.
Posso usar #[serde(rename_all)] no lugar?
Sim: se todas as chaves usarem a mesma convenção, como camelCase, um #[serde(rename_all = "camelCase")] na struct substitui as renomeações individuais.
Ferramenta grátis · no seu navegador execuções · não precisa de conta