Estás sin conexión. Las herramientas que ya abriste siguen funcionando.
JSON a struct de Go
Pega un JSON y obtén structs de Go con etiquetas json. Los nombres de campo siguen las convenciones de Go, como ID y URL, los campos opcionales llevan omitempty y los valores anulables pasan a ser punteros.
Gratis y privado. Todo funciona en tu navegador y no se sube nada.
Informar de un problema
Cómo funciona
Pega tu JSONPega una respuesta de tu API o abre un archivo .json. Con Ejemplo ves un caso de muestra.
Ajusta las opcionesIndica el nombre del tipo principal y las opciones de este lenguaje. El código se actualiza mientras escribes.
Copia o descargaCopia el código en tu proyecto o descárgalo como archivo.
Structs que se deserializan bien
Todos los campos se exportan, porque encoding/json ignora los campos no exportados, y cada campo lleva una etiqueta json con la clave original. Las siglas habituales se escriben a la manera de Go, así user_id pasa a UserID e image_url a ImageURL. Los campos que faltan en algunos elementos reciben omitempty, de modo que vuelven a omitirse al serializar el struct.
Los valores que pueden ser null pasan a punteros, lo que te permite distinguir un valor que falta de un valor cero. Si prefieres valores normales en los campos opcionales, desactiva la opción de punteros. Las marcas de tiempo con zona horaria pasan a time.Time, que lee texto RFC 3339; los demás formatos de fecha se quedan como string, porque time.Time fallaría con ellos.
Preguntas frecuentes
¿Por qué int64 en unos números e int en otros?
Los enteros que caben en 32 bits pasan a int. Los valores más grandes, como marcas de tiempo en milisegundos o ID largos, pasan a int64 para que nunca se corten en ninguna plataforma.
¿Se sube mi JSON a algún sitio?
No. Los tipos se generan en tu navegador. Las respuestas de API con datos de clientes o claves nunca salen de tu dispositivo.
¿Cómo se detectan los campos opcionales?
Si el JSON contiene una lista de objetos, se comparan todos. Un campo que falta en al menos un objeto se marca como opcional. Con un solo objeto, todos los campos se tratan como obligatorios.
¿Qué pasa con los campos que siempre son null?
Con el ejemplo no se puede saber su tipo, así que el campo recibe un tipo general como unknown, object, Any o JsonElement. Añade un ejemplo en el que el campo tenga un valor para obtener un tipo preciso.
¿Por qué mi 1.0 aparece como número decimal?
La herramienta mira cómo está escrito el número. 1.0 o 2.5 pasan a ser double o float, 1 pasa a ser un entero. Si un campo es entero en unos elementos y decimal en otros, se usa el tipo decimal.
¿Puedo usar el resultado en código de producción?
Sí, el código compila tal cual en las configuraciones habituales. Revisa nombres y tipos antes de hacer commit, porque un ejemplo nunca puede mostrar todos los valores posibles.
¿Funciona sin conexión?
Sí. Después de abrir la página una vez, sigue funcionando sin conexión a internet.
Suelta el archivo para ver qué puedes hacer con él