Skip to content
jsonforge.app

JSON a Go

Genera structs de Go con etiquetas json a partir de una muestra JSON, listas para encoding/json.

Entrada JSON

Loading editor…

Código generado

Escribe JSON a la izquierda para generar un tipo a partir de él.

¿Qué es JSON a Go?

Un conversor de JSON a Go lee una muestra de un documento JSON y genera las definiciones de structs de Go necesarias para decodificarlo con encoding/json. La biblioteca estándar de Go unmarshala en tipos concretos y no en un map genérico, así que consumir cualquier respuesta nueva de API exige escribir primero un struct cuyos campos coincidan con el payload — incluida una etiqueta `json:"..."` en cada campo, porque Go exige nombres de campo exportados (capitalizados) mientras que las claves JSON suelen ser minúsculas o snake_case. Escribir esos structs a mano es lento y fácil de dejar sutilmente mal: una sola etiqueta mal escrita y el campo permanece silenciosamente en su valor cero sin ningún error, uno de los bugs más comunes al integrar un endpoint nuevo. Este generador produce todo el conjunto de una vez, dando a cada objeto anidado su propio struct con nombre para que el resultado esté listo para pegar en un paquete.

Cómo usar JSON a Go

  1. Pega una respuesta JSON representativa en el panel izquierdo — incluye todos los campos opcionales que te importen, porque un campo ausente de la muestra no aparecerá en el struct generado.
  2. Fija un nombre de tipo raíz en el cuadro sobre la salida (por defecto "Root"); los objetos anidados se nombran a partir de la clave que los contiene.
  3. Copia los structs generados a tu paquete y decodifica con json.Unmarshal o un json.Decoder.
  4. ¿Necesitas otro lenguaje? El selector sobre la salida cambia la misma entrada a Rust, TypeScript, Python y otros cinco.

Ejemplos

Objeto plano con etiquetas JSON

Entrada

{"id": 1, "name": "Ada", "active": true}

Salida

type Root struct { Id int64 `json:"id"` Name string `json:"name"` Active bool `json:"active"` }

Un objeto anidado se convierte en su propio struct

Entrada

{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}

Salida

type User struct { Id int64 `json:"id"` Name string `json:"name"` Roles []string `json:"roles"` } type Root struct { User User `json:"user"` }

Errores comunes

  • Editar el nombre del campo Go sin actualizar la etiqueta `json:"..."` — encoding/json no encuentra entonces ninguna clave que coincida y el campo permanece silenciosamente en su valor cero en lugar de lanzar un error.
  • Usar un tipo por valor para un campo que puede ser null o estar ausente, lo que hace que un campo ausente sea indistinguible de otro legítimamente puesto a 0, false o la cadena vacía.
  • Generar desde una muestra que omite campos opcionales — el struct resultante simplemente no los tendrá, así que esos valores se descartan en la decodificación sin ningún aviso.

Por qué usar esta herramienta

  • Emite automáticamente las etiquetas de struct `json:"..."`, que es donde los structs de Go escritos a mano fallan con más frecuencia.
  • Da a cada objeto anidado su propio struct con nombre y reutilizable, en lugar de enterrarlo en una definición inline anónima.
  • Se ejecuta íntegramente en el cliente, así que respuestas reales de API usadas como muestra nunca salen de tu navegador.

Preguntas frecuentes