Convierta una muestra JSON en structs de Go con etiquetas json, int o float64, punteros y omitempty
Se ejecuta en su navegador. Nada de lo que escribe se envía a ningún sitio. Comprobado el 16 de octubre de 2026.Pegue una muestra JSON y obtenga tipos struct de Go con etiquetas json, listos para json.Unmarshal. Los números enteros pasan a int, a int64 por encima de 2,147,483,647, y cualquier decimal convierte el campo en float64; un valor que a veces es null pasa a ser un puntero, y las claves ausentes en algunos objetos reciben omitempty.
Esta página se ha traducido automáticamente del original en inglés. Ninguna persona ha revisado todavía la traducción, así que la versión en inglés es la que debe consultar. Leer el original en inglés
Pegue una muestra JSON, por ejemplo la respuesta de una API, en el cuadro de la izquierda.
Los tipos Go aparecen mientras escribe: un struct por objeto, con etiquetas json y nombres al estilo Go como UserID.
Elija Structs anidados en línea u omitempty en cada campo si los quiere, y ponga el nombre del tipo raíz.
Pulse Copiar, o Descargar para guardar un archivo .go, y añada su línea package.
Go decodifica JSON en structs, y cada campo necesita el tipo correcto y una etiqueta json:"..." que nombre la clave. Este convertidor escribe esos tipos a partir de una muestra, así que una respuesta de API de 200 líneas se convierte en Go correcto con un solo pegado.
Cómo se eligen los tipos.
| Valor JSON | Tipo Go |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (solo números enteros) | int, o int64 más allá de 32 bits |
| 4.5 (si aparece algún decimal) | float64 |
| null, y además un tipo | un puntero, como *string |
| solo null, o tipos mezclados | any |
| [ ... ] | un slice, como []string |
| { ... } | un struct con nombre, o uno en línea |
Arrays de objetos. Todos los objetos de un array se fusionan en un struct, así que un campo que aparece solo en algunos sigue estando, con ,omitempty en su etiqueta. Dos objetos con exactamente las mismas claves y tipos comparten un nombre de tipo.
Nombres. Las claves pasan a nombres Go exportados al estilo Go: user_id pasa a UserID, avatar_url a AvatarURL, según la lista de siglas de golint. Una clave que empieza por un dígito recibe una N delante; dos claves que darían el mismo nombre se numeran. Una clave con caracteres que una etiqueta no puede contener, como una coma, se marca con un comentario, porque encoding/json no la emparejaría.
Opciones. Structs anidados en línea escribe un solo tipo con structs anónimos dentro, lo que sirve para una respuesta puntual. omitempty en cada campo sirve para structs que también serializa. El tipo raíz se llama Root salvo que le ponga otro nombre.
Cada resultado se comprobó leyendo de nuevo el Go y decodificando la muestra con las reglas de encoding/json. Nada de lo que pegue sale del navegador.
Pegue una muestra JSON en el convertidor y el struct de Go aparece al lado, con una etiqueta json en cada campo y los objetos anidados como tipos propios. Cópielo en su paquete y decodifique con json.Unmarshal(data, &v), donde v es una variable del tipo raíz.
Use int cuando cada valor de la muestra sea un número entero y float64 cuando algún valor tenga parte decimal, porque encoding/json se niega a meter 4.5 en un int. El convertidor elige por campo, y toma int64 cuando un número entero supera 2,147,483,647.
Un campo visto tanto como null como con valor pasa a ser un puntero, como *string, de modo que nil significa null y una cadena vacía sigue siendo distinta. Un campo que solo fue null pasa a any, ya que la muestra no dice qué contendría en otro caso.
Con omitempty, json.Marshal omite el campo cuando contiene el valor cero: una cadena vacía, 0, false, nil o un slice vacío. El convertidor lo añade a las claves que faltan en algunos objetos de un array, y un interruptor lo añade a todos los campos.
El estilo de Go, que comprueban golint y la mayoría de los linters, escribe las siglas en mayúsculas: ID, URL, HTTP, API, JSON y unas cuarenta más. La etiqueta json conserva la clave original, user_id o userId, así que la decodificación sigue coincidiendo exactamente con la API.
No. La conversión se hace en su navegador sin ninguna petición a un servidor, y el JSON no se guarda, así que las respuestas de API con tokens o datos personales se quedan en su dispositivo. Cierre la pestaña y no queda nada.
Los tipos y las normas cambian; consulte la fuente antes de fiarse de una cifra.
¿Sigue sin resolverlo? Pregunte sobre Convertidor de JSON a structs de Go y cualquiera que lo sepa puede responder. No se necesita cuenta.