JSON a struct de Go

Convierte JSON en structs de Go con nombres de campo exportados, etiquetas json, punteros para null y omitempty opcional. Maneja objetos y arrays anidados. Gratis.

Los objetos anidados se convierten en structs separados; los valores anulables usan punteros; los enteros pasan a int64, los decimales a float64 y los valores mixtos o solo null a any.

Se ejecuta completamente en tu navegador. Tus datos nunca se suben.

Herramientas Relacionadas

Ver Todas

¿Qué es JSON a struct de Go?

Genera definiciones struct de Go idiomáticas a partir de un ejemplo JSON. Los nombres de campo son PascalCase exportados con las siglas de Go (ID, URL, API…), cada campo lleva una etiqueta json:"…" con la clave original y los objetos anidados se convierten en structs con nombre propio.

Cómo usar JSON a struct de Go

  1. Pega un ejemplo JSON en Entrada JSON (o haz clic en Cargar ejemplo / Abrir archivo).
  2. Fija el Nombre del tipo raíz (por defecto Root).
  3. Deja marcado o desmarca Añadir omitempty a campos opcionales y anulables.
  4. Copia el código Go generado o haz clic en Descargar para guardarlo como archivo.

Ejemplo

Entrada
{"id":1,"name":"A","tags":["x"]}
Salida
type Root struct {
	ID   int64    `json:"id"`
	Name string   `json:"name"`
	Tags []string `json:"tags"`
}

Cuándo usar JSON a struct de Go

Úsalo para deserializar respuestas de API con encoding/json. No genera tipos personalizados para fechas ni enums; cambia tú string por time.Time donde corresponda.

Cómo funciona JSON a struct de Go

El ejemplo se recorre de forma recursiva y cada posición acumula los tipos que ha visto. Los arrays de objetos se fusionan en un solo tipo: una clave que falta en algunos elementos pasa a ser opcional, una clave que es null en algún sitio pasa a ser anulable, los enteros mezclados con decimales se convierten en un tipo de coma flotante y cualquier otra mezcla de tipos recurre a un tipo dinámico. Los objetos anidados se convierten en tipos con nombre propio (PascalCase de la clave, claves de array en singular: orders → Order), con sufijos numéricos si los nombres coinciden. La salida Go usa int64 para enteros, float64 para decimales, string, bool, slices para arrays, un puntero (*T) para valores anulables y any para valores dinámicos o solo null. Las columnas se alinean como en la salida de gofmt.

Casos de Uso Comunes

  • Modelar una respuesta REST para json.Unmarshal
  • Crear structs de configuración a partir de un archivo JSON
  • Acelerar la escritura de DTO para un microservicio en Go
  • Comparar los nombres de campo entre JSON y el código Go

Preguntas Frecuentes

¿Por qué int64 en lugar de int?

int64 tiene un tamaño garantizado en todas las plataformas, lo que evita sorpresas de desbordamiento con identificadores grandes. Cámbialo a int si lo prefieres.

¿Cuándo se usa un puntero?

Cuando el ejemplo contiene null para una clave, el campo pasa a ser *T para distinguir un valor ausente del valor cero.

¿Qué hace omitempty?

encoding/json omite el campo al serializar si tiene su valor cero. La opción solo lo añade a los campos opcionales o anulables en el ejemplo.

Siguientes pasos recomendados

Explora más categorías