Qué hace esta herramienta
Una muestra JSON pasa a ser structs de Go, uno por objeto.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
type Root struct {
Id int `json:"id"`
FirstName string `json:"firstName"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
}
Las columnas van alineadas como las alinea gofmt: nombre, tipo, tag. Nadie lee Go sin formatear, y pegar esto en un archivo y ejecutar gofmt no debería cambiar nada.
Esa alineación es reciente: los campos salían separados por un solo espacio. Una cosa pequeña, y aun así era una salida que no se parecía al lenguaje que dice hablar.
Los nombres se exportan, las claves viven en el tag
encoding/json ignora por completo los campos no exportados: un campo en minúscula no decodifica nada ni codifica nada, sin decir palabra. Por eso todos los campos van exportados —PascalCase, con una F delante cuando la clave empieza por dígito (2fa da F2fa)— y el tag lleva la clave original sin tocar.
Dos claves que producen el mismo nombre Go —user-name y userName— se mantienen separadas con un sufijo numerado. Los tags siguen siendo distintos: cada campo sigue correspondiendo a su propia clave.
omitempty omite más de lo que parece
La opción añade ,omitempty a cada tag. Se aplica solo al codificar y no distingue «ausente» de «cero»: 0, "", false, un slice vacío y un map nil desaparecen todos de la salida.
Está bien para un filtro opcional y es falso para una nota que puede valer cero legítimamente. Donde la diferencia importa, la respuesta habitual es un puntero —*int—, que codifica null para nil y un cero de verdad si no.
Los tipos y lo que una muestra no puede decir
- Los enteros pasan a
int, no aint64. En cualquier plataforma de 64 bits es lo mismo; un valor que la desborde falla ruidosamente al decodificar en vez de truncarse en silencio. nully los valores desconocidos pasan aany. Un array vacío pasa a[]any, uno mezclado también, salvo si mezcla enteros y flotantes:[]float64cubre entonces ambos.- Ningún campo es puntero y ninguno es opcional, porque una muestra no puede mostrarlo. Una clave que a veces falta es un
*Tque añades tú, y es lo primero que conviene comprobar contra una segunda carga.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.