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.
Gera structs de Go com tags `json:` a partir de um documento de exemplo, para que o corpo de uma resposta vire algo em que `encoding/json` consiga fazer unmarshal. Os nomes dos campos são exportados em camel case e a chave original fica na tag, que é a parte que as pessoas erram à mão.
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.
TypeScript
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 em um pacote
Campos que faltavam em alguns registros recebem `,omitempty` na tag, para que uma ida e volta por marshal não os invente. Nenhuma cláusula package é emitida: você sabe para onde ela vai.
Perguntas frequentes
Por que todo número é `float64`?
Só quando a amostra tinha um valor fracionário. Se todos os números do documento eram inteiros, o campo é emitido com um tipo inteiro. Não há como distinguir um `1` de JSON que é um id de um `1` de JSON que é um preço arredondado, então a amostra é toda a evidência que existe.
E um campo que é null em alguns registros?
Ele vira um tipo ponteiro, que é como Go distingue “ausente ou null” de “zero”. Isso significa que desreferenciá-lo exige uma checagem de nil — chato, e a razão pela qual a alternativa (um valor simples que se lê em silêncio como 0 ou "") é pior.
Ele lida com uma chave que não é um identificador Go válido?
O nome do campo é limpo — separadores removidos, cada parte com inicial maiúscula — e a chave crua fica na tag `json:`, que é o que de fato faz a correspondência. Uma chave `user-id` vira algo como `UserID` com `json:"user-id"` ao lado.
Campos `time.Time` são produzidos?
Não. Um timestamp em JSON é uma string, e transformá-lo em `time.Time` mudaria o que o unmarshal aceita. Se você quiser isso, troque o tipo do campo à mão: `encoding/json` analisa RFC 3339 para `time.Time` sozinho.
Pode receber de
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.
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.
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.
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 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.
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.