Entrada JSON

Salida Go

¿Qué es JSON a Go?

Acabas de llamar a una API REST en Postman, la respuesta es JSON, y necesitas deserializarla en Go — pero escribir el struct a mano para una respuesta profundamente anidada es realmente molesto. JSON y el paquete encoding/json de Go funcionan muy bien juntos, pero Go requiere definiciones de struct explícitas para cada objeto anidado. Si olvidas un campo o equivocas un tipo, tu deserialización devuelve silenciosamente valores cero. Esta herramienta genera el árbol de structs completo desde tu JSON para que puedas pegarlo directamente en tu proyecto.

Esta herramienta genera structs de Go desde tu JSON. Configura el nombre del struct y del package en el panel de configuración. Activa JSON Tags para json:"field_name" para que los campos del struct se mapeen correctamente a claves camelCase o snake_case. Activa punteros para campos opcionales o nullable para distinguir entre valor cero y ausente. La salida está lista para pegar en tu proyecto y usar con json.Unmarshal().

La conversión se ejecuta completamente en tu navegador. Tu JSON nunca se envía a un servidor. Puedes confirmarlo abriendo la pestaña de red de tu navegador.

Cómo usar esta herramienta

1

Pegar o subir JSON

Copia tu JSON y pégalo en el editor izquierdo. También puedes hacer clic en Subir para cargar un archivo .json o .txt. Usa el botón Ejemplo para datos de ejemplo. En el panel de configuración, configura el nombre del struct (ej. User) y del package (ej. models). Activa JSON Tags para tags de struct json:"key". Activa Punteros para campos opcionales o nullable.

2

Revisar los structs generados

El panel derecho muestra los structs de Go generados. Los objetos anidados se convierten en structs anidados o separados. Los arrays se convierten en []Type. Los JSON tags mapean campos del struct a claves JSON. Usa json.Unmarshal(data, &v) para parsear tu JSON en el struct. Si tu JSON tiene sintaxis inválida, corrígelo primero con el Formateador JSON o el Validador JSON.

3

Copiar o descargar

Usa Copiar para poner el resultado en el portapapeles, o Descargar para guardarlo como archivo .go. Pégalo en tu proyecto Go. Puede que necesites añadir imports o ajustar nombres de package.

Ejemplos de JSON a Go

Aquí un ejemplo de generación de structs de Go desde un objeto JSON.

Ejemplo: Registro de suscriptor

Entrada JSON:

Entrada

Salida Go generada:

Salida

Cuándo ayuda JSON a Go

La mayoría de desarrolladores necesitan esto al integrar con APIs. Envías una petición a través de Postman o curl, y la respuesta viene como JSON. Pegarlo aquí te da structs tipados para usar con encoding/json. Para extraer valores específicos de respuestas grandes, jq funciona bien desde la línea de comandos.

Los archivos de configuración son otro caso común. Un config.json o settings.json con objetos anidados suele necesitar un struct de Go para acceso type-safe. Si necesitas fusionar dos archivos JSON primero, existe la herramienta Combinar JSON.

Las exportaciones de bases de datos de MongoDB, Firestore o CouchDB son típicamente grandes blobs JSON. Procesarlos aquí ayuda a entender la estructura del documento y generar structs de Go para scripts de importación o consultas.

Preguntas frecuentes

¿Cómo genero structs de Go automáticamente desde JSON?

Pega tu JSON en esta herramienta y genera structs de Go al instante. Activa JSON Tags para que los nombres de campos se mapeen correctamente a las claves JSON. Copia la salida y pégala en tu proyecto Go — lista para usar con json.Unmarshal().

¿Por qué los structs de Go necesitan JSON tags?

Los nombres de campos de struct de Go deben ser exportados (capitalizados) para JSON. JSON suele usar camelCase o snake_case. El tag json:"fieldName" le dice a encoding/json qué clave JSON mapea a qué campo de struct. Sin tags, json.Unmarshal hace matching case-insensitive que puede silenciosamente omitir campos.

¿Se envían mis datos a algún sitio?

No. Todo se ejecuta en tu navegador — tu JSON nunca sale de tu máquina. Puedes verificarlo en la pestaña de red del navegador. Seguro para datos de producción.

¿Qué pasa con omitempty?

Añade omitempty al JSON tag para campos que no quieras en la salida cuando estén vacíos: json:"name,omitempty". El generador no lo añade por defecto porque depende del caso de uso — edita la salida después de generar.

¿Cuándo debo usar punteros en campos de struct?

Usa *Type para campos opcionales o nullable. Con un puntero, un campo JSON ausente da nil, que puedes comprobar. Sin punteros, un campo ausente da el valor cero (ej. 0, "") y no puedes saber si estaba ausente o vacío.

Herramientas relacionadas

Para manejo de JSON en Go, ver encoding/json. Para JSON, ver la especificación JSON y RFC 8259. Para una visión general, ver MDN JSON. Para pruebas de API, ver Postman. Para tags de struct de Go, ver la especificación Go. Ver también jq para procesamiento JSON.