Pega una muestra JSON y copia las declaraciones de tipos Go que le corresponden: structs, slices, campos escalares y etiquetas json, con los objetos anidados en línea o como tipos con nombre.
Se ejecuta localmente en tu navegadorPega una muestra JSON y la herramienta escribe las declaraciones de tipos Go que encajan con ella: structs, slices, campos escalares y las etiquetas json que enlazan cada campo con su clave. Los nombres siguen las convenciones de Go, los objetos anidados pueden quedar en línea o convertirse en tipos con nombre, y las estructuras idénticas se declaran una sola vez.
La conversión se ejecuta en esta pestaña del navegador. No se sube nada ni se hace ninguna petición, así que la página sigue funcionando sin conexión y admite datos que no puedes enviar a terceros.
Los números enteros se convierten en int cuando caben en 32 bits y en int64 cuando no; los decimales en float64. Un número escrito como 1.0 sigue siendo float64 aunque parezca entero, y un array que mezcla enteros y decimales pasa a []float64. Un array con valores que no pueden compartir tipo —un número y una cadena, un objeto y un número— cae a []interface{}.
Un array de objetos se fusiona en un solo struct con la unión de sus claves, y la clave que falta en algunos elementos se etiqueta con omitempty. Un campo que en un elemento es un objeto y en otro un escalar pasa a interface{}. Las cadenas con forma de marca de tiempo RFC 3339 (2024-05-06T07:08:09Z) se convierten en time.Time, que exige añadir la importación time a mano.
Los nombres de campo son nombres exportados de Go: user-id pasa a UserID, y las siglas habituales como ID, URL, API y HTTP conservan sus mayúsculas. La clave original se conserva en la etiqueta del struct, de modo que el código generado sigue correspondiendo con el payload que pegaste.
Dos claves que se reducen al mismo nombre Go reciben un sufijo numérico (UserID y UserID2), y las claves formadas solo por símbolos pasan a Field, Field2, etc. Las comillas y barras invertidas dentro de una clave se escapan en la etiqueta para que el código siga siendo válido.
Solo son declaraciones: sin cláusula package, sin importaciones, sin métodos y sin compilar nada aquí. Los tipos describen la muestra que pegaste, no un esquema: un campo que en esa muestra es null o no aparece se tipa según lo que proporcionaste, así que revisa la nulabilidad y el ancho de los números con un payload más grande.
Los documentos grandes se analizan igualmente en el navegador y están limitados por la memoria de tu dispositivo. Trata el resultado como un punto de partida por revisar: renombra los tipos, añade lo que la muestra no podía mostrar y pasa el archivo por tu compilador después de pegarlo.