JSON a estructuras de Go
JSON to Go Structs
Genera estructuras de Go con etiquetas json a partir de un JSON de ejemplo, incluidos los tipos anidados y repetidos.
Genera structs de Go con etiquetas `json:` a partir de un documento de ejemplo, para que el cuerpo de una respuesta se convierta en algo que `encoding/json` pueda deserializar. Los nombres de campo se exportan en camel case y la clave original se conserva en la etiqueta, que es la parte que la gente hace mal a mano.
JSON de ejemplo
Suelta un archivo .json
Se lee en esta pestaña. No se sube nada.
Dale todos los elementos que tengas. Cada registro de más estrecha la deducción: un campo que falte en uno de ellos es lo que lo vuelve opcional.
TypeScript
Cómo se usa
Pega todos los registros que tengas
Se lee y fusiona cada elemento de cada arreglo, no solo el primero. Tres registros dicen mucho más que uno, porque un campo ausente en uno de ellos es exactamente lo que hace que ese campo sea opcional.
Da nombre al tipo raíz
Los objetos anidados toman el nombre de la clave que los contiene, en singular para los arreglos, así que `users` produce un `User`. Solo la raíz necesita un nombre tuyo.
Lee los recuentos bajo la salida
Tipos, campos opcionales, uniones y cuántos registros se fusionaron. Un recuento de uniones mayor que cero significa que un campo tuvo dos clases de valor distintas en tu muestra, algo que conviene mirar antes de pegar el resultado en una base de código.
Pega los structs en un paquete
Los campos que faltaban en algunos registros reciben `,omitempty` en su etiqueta para que un viaje de ida y vuelta por marshal no los invente. No se emite cláusula de paquete: tú sabes adónde va.
Preguntas frecuentes
¿Por qué todos los números son `float64`?
Solo cuando la muestra tenía un valor con decimales. Si todos los números del documento eran enteros, el campo se emite como tipo entero. No hay forma de distinguir un `1` de JSON que es un id de un `1` de JSON que es un precio redondeado, así que la muestra es toda la evidencia que hay.
¿Y un campo que es null en algunos registros?
Se convierte en un tipo puntero, que es como Go distingue «ausente o null» de «cero». Eso significa que desreferenciarlo necesita una comprobación de nil: molesto, y la razón por la que la alternativa (un valor plano que se lee en silencio como 0 o "") es peor.
¿Maneja una clave que no es un identificador válido de Go?
El nombre del campo se limpia —se quitan los separadores y se pone cada parte en mayúscula inicial— y la clave original se queda en la etiqueta `json:`, que es lo que realmente hace la correspondencia. Una clave `user-id` se convierte en algo como `UserID` con `json:"user-id"` al lado.
¿Se generan campos `time.Time`?
No. Una marca de tiempo en JSON es una cadena, y convertirla en `time.Time` cambiaría lo que acepta la deserialización. Si quieres eso, cambia el tipo del campo a mano: `encoding/json` analiza RFC 3339 a `time.Time` por sí solo.
Puede recibir de
JSON a tipos de TypeScript
JSON to TypeScript
Deduce interfaces o tipos de TypeScript a partir de un JSON de ejemplo, fusionando campos opcionales y uniones.
JSON a estructuras de Rust
JSON to Rust Structs
Genera estructuras de Rust anotadas con serde a partir de un JSON de ejemplo, con Option para los campos nulos o ausentes y renombrado a snake_case.
Formateador y validador de JSON
JSON Formatter & Validator
Indenta, minifica y valida JSON, señalando la línea y la columna exactas del error de sintaxis.
Formateador y validador de YAML
YAML Formatter & Validator
Reindenta el YAML de forma uniforme, lo valida y señala los tabuladores y las anclas que rompen los analizadores.
Después
Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.
Formateador y validador de JSON
JSON Formatter & Validator
Indenta, minifica y valida JSON, señalando la línea y la columna exactas del error de sintaxis.
JSON a estructuras de Rust
JSON to Rust Structs
Genera estructuras de Rust anotadas con serde a partir de un JSON de ejemplo, con Option para los campos nulos o ausentes y renombrado a snake_case.
JSON a tipos de TypeScript
JSON to TypeScript
Deduce interfaces o tipos de TypeScript a partir de un JSON de ejemplo, fusionando campos opcionales y uniones.
Codificador y decodificador Base64
Base64 Encoder & Decoder
Codifica y decodifica Base64 y Base64URL, para texto o archivos, tratando UTF-8 correctamente.
curl a código
curl to Code
Convierte un comando curl en fetch, axios, requests de Python, Go, PHP o PowerShell.
Hash de un texto
Text Hash
Calcula MD5, SHA-1, SHA-256, SHA-384, SHA-512 y CRC-32 de una cadena, con salida opcional en mayúsculas o en Base64.