# JSON para Rust Struct

Converte dados JSON em structs Rust com derives serde Serialize/Deserialize, campos snake_case e atributos serde rename

> Página canônica: https://elysiatools.com/pt/tools/json-to-rust

- **Categoria:** Development

- **Palavras-chave:** json, rust, struct, serde, converter

## Visão geral

O conversor de JSON para Rust Struct permite transformar payloads JSON em estruturas de dados Rust fortemente tipadas de forma rápida. A ferramenta gera automaticamente structs compatíveis com a biblioteca Serde, aplicando os derives Serialize e Deserialize, convertendo campos para o padrão snake_case e adicionando atributos de renomeação para garantir a compatibilidade com a API original.

## Entradas

- **Entrada JSON** (textarea): { "name": "Alice", "age": 30, "roles": \["admin", "user"\], "address": { "city": "Shanghai", "zip": "200000" } }
- **Nome do tipo raiz** (text): Root
- **Envolver com Option** (checkbox)

## Quando usar

- Ao integrar APIs externas que retornam JSON em projetos desenvolvidos na linguagem Rust.
- Durante a modelagem de dados e criação de DTOs (Data Transfer Objects) para microsserviços em Rust.
- Quando for necessário mapear payloads JSON complexos ou aninhados para estruturas Rust com suporte nativo à serialização e desserialização do Serde.

## Como funciona

- Insira o payload JSON de origem no campo de entrada de texto.
- Defina o nome da estrutura raiz e escolha se deseja envolver os campos com o tipo Option para tratar valores ausentes.
- O conversor analisa a estrutura do JSON, mapeia os tipos de dados para equivalentes em Rust e gera o código com os atributos do Serde.

## Casos de uso

- Consumo de APIs REST: Criação rápida de modelos de dados para desserializar respostas de APIs externas em clientes HTTP como o reqwest.
- Configuração de Aplicações: Conversão de arquivos de configuração JSON em structs Rust para leitura e validação durante a inicialização do sistema.
- Desenvolvimento de Web APIs: Definição de payloads de requisição e resposta para frameworks web como Actix-web ou Axum.

## Perguntas frequentes

### Como a ferramenta lida com nomes de campos que não seguem o padrão do Rust?

Ela converte automaticamente os nomes dos campos para snake_case e adiciona o atributo #[serde(rename = "...")] para manter a compatibilidade com o JSON original.

### É possível gerar campos opcionais?

Sim, ao ativar a opção correspondente, os campos gerados serão envolvidos com o tipo Option do Rust para evitar falhas de desserialização caso o campo esteja ausente.

### Quais derives são adicionados automaticamente às structs?

A ferramenta adiciona os derives Serialize e Deserialize da biblioteca Serde para facilitar a conversão de e para JSON.

### O conversor suporta objetos JSON aninhados?

Sim, ele cria structs separadas para cada objeto aninhado encontrado no JSON e as vincula corretamente na struct principal.

### Preciso instalar alguma dependência para usar o código gerado?

Sim, você precisará adicionar a crate serde com a feature derive habilitada no arquivo Cargo.toml do seu projeto Rust.

## Ferramentas relacionadas

- [Gerador de Data URI](https://elysiatools.com/pt/tools/data-uri-generator): Converte arquivos em Data URIs (Base64 ou porcentagem-codificada) para incorporar imagens, fontes e recursos diretamente em HTML, CSS ou Markdown
- [Conversor de JSON Schema para Zod](https://elysiatools.com/pt/tools/json-schema-to-zod-schema-converter): Converte definicoes JSON/YAML de JSON Schema em codigo Zod pronto para uso em projetos TypeScript, com objetos aninhados, arrays, enums e regras comuns de validacao
- [JSON para C# Class](https://elysiatools.com/pt/tools/json-to-csharp): Converte dados JSON em classes C# com propriedades PascalCase, atributos JsonPropertyName e inferência de tipos aninhados
- [JSON para Go Struct](https://elysiatools.com/pt/tools/json-to-go): Converte dados JSON em definições de struct Go com tags json, campos PascalCase exportados e inferência de tipos aninhados
- [JSON para Java Class](https://elysiatools.com/pt/tools/json-to-java): Converte dados JSON em classes Java com anotações @JsonProperty do Jackson, campos privados, getters e setters
- [JSON para Kotlin Data Class](https://elysiatools.com/pt/tools/json-to-kotlin): Converte dados JSON em data classes Kotlin com anotações @SerializedName, tratamento de nulos e inferência de tipos aninhados
- [JSON para TypeScript](https://elysiatools.com/pt/tools/json-to-typescript): Converte dados JSON em interfaces TypeScript ou aliases de tipo, com tipos união, campos opcionais e inferência de objetos aninhados
- [Conversor de logs para diagramas de sequencia](https://elysiatools.com/pt/tools/log-sequence-diagram-converter): Converte logs estruturados de servicos em diagramas Mermaid ou PlantUML com anotacoes de latencia e erro

## Exemplos

- [Exemplos de Serialização de Dados Web Rust](https://elysiatools.com/pt/samples/web-serialization-rust): Exemplos de serialização de dados Web Rust incluindo serialização JSON, desserialização e análise XML
- [Amostras JSON de Terraform Plan](https://elysiatools.com/pt/samples/terraform-plan-json-samples): Arquivos Terraform plan JSON para visualizacao de dependencias e revisao de mudancas, no estilo terraform show -json
- [Exemplos JSON de Chat](https://elysiatools.com/pt/samples/chat-transcript-json): Exemplos JSON para transcricoes de chat multirrole
- [Exemplos de JSON](https://elysiatools.com/pt/samples/json): Exemplos de formato JSON (JavaScript Object Notation) de estruturas simples a complexas

## Conteúdo relacionado

- [Geradores de JSON para codigo tipado](https://elysiatools.com/pt/hubs/json-to-typed-code-generators): Gere modelos tipados a partir de JSON ou schemas para TypeScript, Go, Rust, Kotlin, Java, C# e validacao Zod.
