Acerca de esta herramienta
El conversor genera estructuras con nombre y tipos slice para Go 1.18+. Los campos reciben identificadores exportables válidos y las etiquetas json conservan las claves cuando es posible. Las claves complejas o especiales requieren revisar las restricciones de encoding/json.
Cómo se usa
- Introduce JSON; varias muestras de objetos ayudan a detectar campos ausentes.
- Indica el nombre de la estructura raíz.
- Pulsa «Convertir» y revisa los campos exportados, etiquetas json, punteros anulables y slices.
- Copia el código o descarga el archivo Go. Intégralo en el paquete de destino y ajústalo al proyecto.
Ejemplos
- {"first_name":"Ana"}: genera el campo exportado FirstName y conserva json:"first_name".
- [{"id":1,"name":"Ana"},{"id":2}]: name es opcional y puede usar *string con omitempty.
- {"matrix":[[1,2],[3,4]]}: se infiere como [][]int64.
Reglas de conversión de tipos
Las cadenas usan string; los enteros seguros, int64; los decimales y mezclas numéricas, float64; los booleanos, bool; las matrices, []T. Los tipos conocidos anulables u opcionales usan los punteros adecuados; los campos ausentes incluyen omitempty. Los tipos desconocidos, solo null o mezclas incompatibles usan any. El destino es Go 1.18+. Los campos se exportan, los nombres de estructuras son estables y sin colisiones, y las etiquetas se escapan como cadenas Go válidas. encoding/json interpreta especialmente comas, guiones y algunos caracteres de control. El código señala las claves que no pueden conservarse automáticamente en ambos sentidos: una sintaxis válida no garantiza el mapeo de cualquier clave. Entrada y salida: hasta 1 MiB cada una; 64 niveles, 100000 nodos, 5000 campos combinados y 256 tipos. Los enteros no seguros, números no finitos y valores que se redondean a cero por subdesbordamiento causan un error. Los demás decimales dependen de la precisión de coma flotante del navegador.
Usos habituales
- Preparar tipos Go a partir de muestras de servicios.
- Revisar punteros para campos anulables u opcionales.
- Generar estructuras con nombre y slices para JSON anidado.
Privacidad
La inferencia de JSON y la generación Go se realizan en el navegador, sin enviar datos a servidores ni servicios externos.
Si quieres conservar los resultados, cópialos o descárgalos antes de salir de la página.
Preguntas frecuentes
¿Por qué los campos empiezan por mayúscula?
encoding/json normalmente requiere campos exportados. Una inicial mayúscula permite acceder a ellos desde otros paquetes y desde la biblioteca estándar.
¿Para qué sirve una etiqueta json?
Define la correspondencia entre el campo de la estructura y la clave JSON para conservar las claves habituales al cambiar el nombre del campo.
¿Cómo se trata null?
Cuando aparece junto a un tipo conocido puede usarse un puntero. Si solo hay null, faltan datos para inferir un tipo más preciso y se usa una opción conservadora como any.
¿Por qué se usa any?
El código está destinado a Go 1.18+. any es un alias de interface{} apropiado cuando la muestra no permite determinar el tipo.
¿Cualquier clave JSON puede convertirse directamente en una etiqueta?
No siempre. Aunque la cadena Go se puede escapar, encoding/json interpreta contenidos especiales como comas y guiones. Esas claves necesitan un mapeo personalizado; revisa las notas del código.