Inspector de estructura JSON
FormatoTodo se ejecuta en tu navegador: no se sube nada
Pega un JSON y obtén un retrato de su estructura: profundidad de anidamiento, número total de nodos, cuántos objetos y arrays, el reparto por tipos, el array más largo y la cadena más larga. Lo más valioso de mirar son las claves duplicadas. `JSON.parse('{"a":1,"a":2}')` devuelve `{"a":2}`: la primera `a` desaparece sin decir nada. En el trabajo con APIs esto es muy real: el servidor escribe el mismo campo en dos sitios, dos personas miran «el mismo JSON» y llegan a conclusiones distintas, cada una sospechando que la otra leyó mal. Esta herramienta rastrea el texto original para encontrarlas y decirte en qué ruta están. Por qué es una herramienta distinta del «Formateador JSON»: aquel responde «cómo miro este JSON» (maquetar, plegar, editar); esta responde «qué es este JSON» (cuánto ocupa, hasta qué profundidad, de qué está hecho). La entrada es la misma, pero el trabajo y la interfaz no se parecen en nada: meter estadísticas en un editor ya lleno de botones no serviría a ninguno de los dos. Las otras tres acciones son recursivas: mezclar, invertir y quitar duplicados llegan a los arrays de todos los niveles, no solo al más externo.
Funciones
- Profundidad de anidamiento, número total de nodos y cuántos objetos y arrays hay
- Reparto por tipos (string × 12, number × 5 …), ordenado de más a menos
- Cuánto mide el array más largo, con la longitud de todos los arrays
- Cuánto mide la cadena más larga y la longitud total de las cadenas
- ⚠️ Claves duplicadas: rastrea el texto original en busca de claves repetidas en un mismo objeto, da la ruta y las veces que aparecen, y explica que `JSON.parse` solo conserva la última
- Las tres acciones de mezclar, invertir y quitar duplicados se aplican recursivamente a los arrays de todos los niveles
- Quitar duplicados compara por el texto JSON del valor: `1` y `"1"` son cosas distintas, y dos objetos idénticos son el mismo
- El análisis reutiliza el localizador de errores del «Formateador JSON» (con línea y columna, y reconoce literales de Python)
- Todo ocurre en tu navegador, sin red
Cómo se usa
- Pega tu JSON
- Deja la acción en estadísticas de estructura y los números aparecen al momento
- Mira la fila de claves duplicadas: cuando no hay ninguna, lo dice expresamente
- Para ordenar los datos, elige mezclar, invertir o quitar duplicados y obtendrás JSON formateado
Preguntas frecuentes
- ¿Por qué importan las claves duplicadas si el valor que lee mi código parece correcto?
- Porque estás leyendo la última. JSON.parse conserva el valor posterior y descarta el anterior, y ese descarte ocurre al analizar, no al leer: el valor que obtienes es «correcto», pero no necesariamente viene de donde supones. El problema real aparece en equipo: el servidor dice que devolvió A, y A está sin duda en el JSON que pegas (su primera aparición), pero tu código recibe la B que venía después. Esta herramienta señala las dos, para que podáis hablar de la misma línea.
- ¿Por qué no basta con decir que un JSON no debe tener claves duplicadas?
- Porque la norma no lo prohíbe: la RFC 8259 deja el comportamiento a la implementación. Los analizadores discrepan: JavaScript conserva la última, el json de Python también, y algunos analizadores estrictos rechazan el documento entero. Que el mismo archivo dé resultados distintos según el lenguaje es justo lo que lo hace peligroso. Esta herramienta no juzga: expone los hechos.
- ¿Desde dónde se cuenta la profundidad?
- La raíz cuenta como nivel 1, así que `{"a":1}` tiene profundidad 2 (el objeto raíz más el número) y `{"a":{"b":1}}` tiene 3. Así la profundidad significa «cuántos nodos atraviesas desde la raíz hasta el valor más hondo», más intuitivo que contar niveles de llaves.
- ¿La mezcla es criptográficamente aleatoria?
- Usa `Math.random` con una mezcla de Fisher–Yates. ⚠️ No usa `crypto.getRandomValues` a propósito: el objetivo es que el orden de tus datos sea impredecible, no la solidez criptográfica. Para valores impredecibles (contraseñas, tokens), usa el generador de contraseñas o el de números aleatorios.
Herramientas relacionadas
Formateador JSON
FormatoFormatea, valida y repara JSON en línea: árbol plegable, búsqueda de claves y valores, edición nodo a nodo y errores con línea y columna.
JSON a código
FormatoConvierte una muestra JSON en interfaces de TypeScript, structs de Go, clases de Java o structs de Rust; las claves que faltan salen opcionales.
Conversor JSONL
FormatoConvierte JSONL (NDJSON) y arrays JSON en ambos sentidos: analiza línea a línea e indica la línea que falla, salta las líneas vacías y trata CRLF y BOM.
Formateador SQL
FormatoFormatea SQL en línea: una cláusula por línea, palabras clave con el mismo estilo y subconsultas sangradas. El minificador quita los comentarios.
Conversor JSON5
FormatoPasa JSON5 a JSON estricto: comentarios, claves sin comillas, comillas simples, comas finales, hexadecimal e Infinity, con errores por línea y columna.
Formateador XML
FormatoFormatea XML en línea por niveles de etiqueta, con comentarios, CDATA y DOCTYPE en su propia línea y los valores de atributo intactos.