← Todas las herramientas Code Gen

Generador de Structs Go desde JSON

Pega JSON y obtén al instante structs Go listas para producción con tags json correctos.

0 car.

100% del lado del cliente

Todo el procesamiento se ejecuta en tu navegador. Tus datos JSON nunca se envían a ningún servidor.

Cómo se mapea JSON a structs Go

Go usa campos de struct exportados con tags json entre comillas inversas para la serialización JSON. El generador crea una struct para cada objeto JSON, con un campo exportado por clave. Los nombres de campo siguen las convenciones Go: son exportados (PascalCase) y la clave JSON original se preserva en el tag json:"key". Así "firstName" en JSON se convierte en FirstName string `json:"firstName"` en Go.

El mapeo de tipos sigue las reglas estándar encoding/json: las cadenas JSON se convierten en string, los enteros en int64, los decimales en float64, los booleanos en bool y los arrays en slices ([]T). Los objetos anidados generan tipos struct con nombre adicionales. Un campo que puede ser null se tipa como puntero (*T) para que el valor cero nil represente limpiamente JSON null.

La opción de tag omitempty puede activarse para cada campo — `json:"key,omitempty"` omite el campo de la salida marshaleada cuando contiene su valor cero. Este es el patrón Go estándar para campos de API opcionales.

Convenciones de nomenclatura e idiomas Go

Go tiene convenciones de estilo estrictas impuestas por gofmt y golint. El generador las aplica automáticamente: los acrónimos como "id", "url", "http" y "api" se ponen en mayúsculas a ID, URL, HTTP y API respectivamente, siguiendo la guía de estilo oficial de Go. Por ejemplo "userId" se convierte en UserID y "apiUrl" en APIURL.

Los nombres de struct se derivan de las claves de objeto JSON en PascalCase. La struct raíz se llama "Root" por defecto (personalizable). Cuando la misma estructura JSON aparece varias veces bajo diferentes claves, el generador detecta la forma duplicada y reutiliza el mismo tipo de struct.

La salida incluye una declaración de package (por defecto "main" para prototipos rápidos, cambiable) y el import necesario para "encoding/json" si se generan funciones helper Marshal/Unmarshal junto con las structs.

Flujos de trabajo de desarrollo Go

Los desarrolladores Go que trabajan con APIs REST pasan mucho tiempo escribiendo a mano definiciones de struct que reflejan las respuestas JSON. Pega la respuesta de la API, genera las structs y usa inmediatamente json.Unmarshal para parsear la respuesta en valores Go tipados.

Al construir herramientas CLI con cobra o manejadores HTTP con net/http, las structs de solicitud y respuesta bien tipadas son esenciales. El generador produce structs listas para usar con json.NewDecoder(r.Body).Decode(&req) y json.NewEncoder(w).Encode(resp).

Los proyectos de módulos Go que llaman a APIs de terceros a menudo mantienen los archivos de struct generados en un paquete internal/models. La salida del generador encaja perfectamente en este patrón con un nombre de paquete configurable.

FAQ

¿Se envían mis datos a un servidor?

No. Todo el procesamiento se ejecuta completamente en tu navegador. Tu JSON nunca sale de tu dispositivo.

¿Cómo se manejan las palabras reservadas de Go como nombres de campo?

Las palabras reservadas de Go como "type", "func", "var", "map" y "chan" reciben un guión bajo como sufijo (ej. Type_) y el tag json preserva el nombre de clave original.

¿Se manejan los arrays de tipos mixtos?

Cuando un array JSON contiene elementos de diferentes tipos, el tipo de elemento del slice se convierte en interface{} (o any en Go 1.18+), reflejando la naturaleza dinámica de los datos.

¿Puedo generar con tags omitempty por defecto?

Sí. Un toggle global añade omitempty a cada tag de campo, que es la elección más común para structs de solicitud de API donde los campos son a menudo opcionales.

¿El generador maneja JSON profundamente anidado?

Sí. Los objetos arbitrariamente anidados producen cada uno su propia struct con nombre, y la struct padre la referencia por nombre. Todas las structs se emiten en un único archivo en orden de dependencia.

Herramientas relacionadas