Saltar al contenido
AZ Tools

Conversor de JSON a struct de Go

Pega una muestra de tu JSON y obtén al instante la definición de tipo de Go correspondiente: la conversión corre en vivo mientras escribes, por completo en tu navegador. Las claves del objeto se convierten en nombres de campo exportados en PascalCase para que encoding/json pueda serializarlos, y cada campo lleva una etiqueta json:"…" con la clave original, de modo que un viaje de ida y vuelta por la librería estándar reproduce el JSON de partida. Los enteros se mapean a int64, los decimales a float64, y los objetos anidados se emiten como structs anónimos en línea que calcan la forma del payload. Como los tipos se infieren de una única muestra, trata la salida como un buen primer borrador: un campo que casualmente vale 42 se vuelve int64 aunque la API también pueda devolver 41.5, null y los arreglos vacíos salen como interface{} porque la muestra no revela ningún tipo de elemento, y el tipo de un slice se toma solo de su primer elemento. Revisa el resultado, ajusta lo que conozcas mejor y añade ,omitempty o punteros para los campos opcionales. Tu entrada nunca sale de tu dispositivo y se guarda en localStorage para sobrevivir a una recarga.

Struct de Go

Cómo usar

  1. Pega o escribe una muestra de tu JSON en el cuadro de entrada — la conversión es en vivo, no hay botón que pulsar.
  2. Si quieres, nombra el struct raíz (por defecto AutoGenerated); el nombre se normaliza a un identificador PascalCase exportado.
  3. Copia la definición generada con el botón Copiar y pégala en tu archivo Go.
  4. Revisa los tipos inferidos: amplía los números que puedan ser fraccionarios, sustituye los interface{} y añade ,omitempty donde los campos sean opcionales.

Preguntas frecuentes

¿Cómo se tipan los números?
Los enteros se convierten en int64 y cualquier valor con parte fraccionaria en float64. Es inferencia a partir de una sola muestra: si un campo puede ser fraccionario alguna vez, cámbialo tú a float64, y si necesitas precisión decimal exacta, considera json.Number.
¿Qué pasa con null o los arreglos vacíos?
null se mapea a interface{} y los arreglos vacíos a []interface{}, porque la muestra no aporta información de tipo. Sustitúyelos cuando conozcas el tipo real: un campo que puede ser null suele expresarse mejor como puntero en Go.
¿Cómo se eligen los nombres de campo y las etiquetas json?
Las claves se dividen por caracteres no alfanuméricos y se unen en PascalCase como identificadores exportados (user_id pasa a ser UserId), porque encoding/json solo ve campos exportados. La clave original se conserva literal en la etiqueta json, así que al serializar se reproducen exactamente tus claves.
¿Los objetos anidados se generan como tipos con nombre aparte?
No: se emiten como structs anónimos en línea, lo que mantiene la salida en una única declaración autocontenida que puedes pegar donde sea. Si una forma se repite en varios sitios, extráela a mano a un tipo con nombre. Además, el tipo de elemento de un arreglo se infiere solo del primer elemento, así que los arreglos con tipos mezclados no se detectan.
¿Mi JSON se envía o se guarda en algún sitio?
Nunca sale del navegador: el análisis y la generación son JavaScript puramente del lado del cliente. Por comodidad, la entrada y el nombre raíz se guardan en el localStorage de tu navegador para sobrevivir a una recarga; borra la entrada si pegaste algo sensible en un equipo compartido.

Herramientas relacionadas