JSON para structs Rust
JSON to Rust Structs
Gera structs Rust anotadas com serde a partir de um exemplo de JSON, com Option para campos nulos ou ausentes e renomeações em snake_case.
Emite structs de Rust com derives de `serde` a partir de um documento JSON de exemplo: `Serialize`, `Deserialize`, o `Option<…>` certo nos campos que às vezes faltavam, e um `#[serde(rename = "…")]` onde quer que a chave JSON não seja um nome de campo snake_case válido.
JSON de exemplo
Solte um arquivo .json
Lido nesta aba. Nada é enviado.
Dê todos os elementos que você tiver. Cada registro a mais estreita o palpite: um campo que falta em um deles é o que o torna opcional.
Rust
Como usar
Cole todos os registros que você tiver
Cada elemento de cada array é lido e mesclado, não só o primeiro. Três registros dizem muito mais do que um, porque um campo ausente em um deles é exatamente o que torna esse campo opcional.
Dê nome ao tipo raiz
Objetos aninhados recebem o nome da chave que os contém, no singular para arrays, então `users` produz um `User`. Só a raiz precisa de um nome seu.
Leia as contagens abaixo da saída
Tipos, campos opcionais, uniões e quantos registros foram mesclados. Uma contagem de uniões acima de zero significa que um campo teve dois tipos de valor diferentes na sua amostra — vale olhar antes de colar o resultado em uma base de código.
Cole as structs no seu crate
A linha `use serde::{Deserialize, Serialize};` é emitida para você; o crate em si e sua feature `derive` cabem a você adicionar ao Cargo.toml.
Perguntas frequentes
Por que um campo saiu como `serde_json::Value`?
Porque ele continha mais de um tipo de valor na amostra: uma string em um registro e um número em outro. Rust não tem uma união sem tag para recorrer aqui, e `Value` é o tipo honesto: desserializa sem mentir sobre o que há dentro.
Qual é a diferença entre `Option<T>` e `#[serde(default)]` aqui?
Um campo que era `null` em alguns registros vira `Option<T>`; um campo que simplesmente estava ausente recebe também `#[serde(default)]`, para que desserializar um registro sem ele dê certo em vez de dar erro. Os dois aparecem juntos quando a amostra mostrou as duas coisas.
Enums são gerados para campos de string?
Não. Toda string é `String`. Inferir um enum de um punhado de registros significa um erro de desserialização na primeira vez que a produção mandar uma variante que a sua amostra não continha, o que é uma falha pior do que um tipo frouxo.
Posso derivar outros traits?
Adicione você mesmo: a lista de derives emitida é deliberadamente só `Serialize, Deserialize`. `Debug` e `Clone` quase sempre são desejados também, mas são uma edição de uma linha, e adivinhar errado faz a saída não compilar para tipos que não podem derivá-los.
Pode receber de
JSON para structs Go
JSON to Go Structs
Gera structs Go com tags json a partir de um exemplo de JSON, incluindo tipos aninhados e repetidos.
Formatador e validador de JSON
JSON Formatter & Validator
Formata, minifica e valida JSON, apontando a linha e a coluna exatas de um erro de sintaxe.
Formatador e validador de YAML
YAML Formatter & Validator
Reindenta YAML de forma consistente, valida e aponta os erros de tabulação e âncora que quebram os parsers.
Formatador e validador de TOML
TOML Formatter & Validator
Formata e valida TOML, normalizando a ordem das tabelas e o estilo das tabelas em linha.
Em seguida
Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.
Formatador e validador de JSON
JSON Formatter & Validator
Formata, minifica e valida JSON, apontando a linha e a coluna exatas de um erro de sintaxe.
JSON para structs Go
JSON to Go Structs
Gera structs Go com tags json a partir de um exemplo de JSON, incluindo tipos aninhados e repetidos.
JSON para TypeScript
JSON to TypeScript
Infere interfaces ou tipos TypeScript a partir de um exemplo de JSON, mesclando campos opcionais e de união.
Codificar e decodificar Base64
Base64 Encoder & Decoder
Codifica e decodifica Base64 e Base64URL para texto ou arquivos, tratando UTF-8 corretamente.
curl para código
curl to Code
Converte um comando curl em fetch, axios, Python requests, Go, PHP ou PowerShell.
Hash de texto
Text Hash
Calcula MD5, SHA-1, SHA-256, SHA-384, SHA-512 e CRC-32 de uma string, com opção de saída em maiúsculas e Base64.