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.

Execuções
No seu navegador
Custo
Grátis · sem cadastro
Disponibilidade
Pronto para usar
JSON para RustProcessamento local

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

  1. Cole um exemplo JSON, de preferência um array com vários registros típicos.
  2. Dê um nome ao tipo de nível superior e escolha se os campos None devem ser omitidos durante a serialização.
  3. 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