Aplana y reconstruye rutas JSON en tu navegador
Convierte JSON anidado en un mapa de rutas y valores, o reconstruye su estructura a partir del mapa. Procesa archivos en tu navegador.
Espacio de trabajo de la herramienta
Aplanar y reconstruir JSON
Activa JavaScript para procesar JSON localmente en el navegador.
La raíz es $. Una propiedad simple se escribe $.name; una clave literal con punto usa $["a.b"]; un índice usa $[0]. El mapa plano vacío {} no es válido; {"$":{}} representa un objeto vacío. Hay conflicto cuando una ruta es prefijo de otra, como {"$.a":1,"$.a.b":2}. Se rechazan arrays dispersos, por ejemplo {"$[2]":"x"}. No cualquier mapa con puntos se puede reconstruir sin ambigüedad. La operación inversa vuelve a comprobar los límites.
Usar un resultado cambia a la operación inversa. Se vuelven a comprobar sus límites y no se ejecuta automáticamente.
Archivo: 8.000.000 bytes; entrada: 2.000.000 unidades UTF-16; profundidad: 200; nodos: 100.000; entradas: 50.000; salida: 2.000.000 unidades UTF-16.
Límites de trabajo
Límites de trabajo: 1.000.000 unidades de análisis, 1.000.000 de transformación y 1.000.000 de serialización. Las rutas admiten 200 segmentos, 10.000 unidades cada una y 1.000.000 en total; los índices llegan a 99.999. No se garantizan todos los máximos a la vez.
El procesamiento permanece en este navegador. No hay cargas, URLs remotas, borradores guardados ni contenido del documento en URLs o registros.
Ningún archivo seleccionado
Entrada de ejemplo
Carga el ejemplo de la operación seleccionada.
{"user":{"name":"Ana"},"items":[1,{},[]],"a.b":null,"":true}Ejemplos de sintaxis de rutas
{"$.user.name":"Ana","$.items[0]":1,"$.items[1]":{},"$.items[2]":[],"$[\"a.b\"]":null,"$[\"\"]":true}
{"$[\"user\"][\"name\"]":"Ana","$[\"items\"][0]":1,"$[\"items\"][1]":{},"$[\"items\"][2]":[],"$[\"a.b\"]":null,"$[\"\"]":true}
Listo. Elige una operación y ejecútala para procesar la entrada actual.
Se omitieron algunos diagnósticos al alcanzar el límite.
Vista previa de salida
Salida completa para copiar manualmente
Selecciona toda la salida con el botón siguiente y cópiala desde este campo.
Convierte un JSON anidado en un mapa de rutas
Aplanar asigna una ruta a cada valor. Resulta útil para revisar documentos con varios niveles o trabajar con datos según su ubicación. Pega JSON o abre un archivo .json UTF-8, elige Aplanar JSON y ejecuta la operación. Para hacer el recorrido inverso, pega el mapa y elige Reconstruir JSON.
Prueba con este documento:
{"user":{"name":"Ana"},"items":[1,{},[]],"a.b":null,"":true}
Con notación de puntos:
{"$.user.name":"Ana","$.items[0]":1,"$.items[1]":{},"$.items[2]":[],"$[\"a.b\"]":null,"$[\"\"]":true}
Con notación de corchetes:
{"$[\"user\"][\"name\"]":"Ana","$[\"items\"][0]":1,"$[\"items\"][1]":{},"$[\"items\"][2]":[],"$[\"a.b\"]":null,"$[\"\"]":true}
Ambos mapas reconstruyen los datos de entrada. La salida predeterminada usa dos espacios; los ejemplos están minificados para comparar mejor las rutas.
Cómo leer las rutas
$ representa la raíz. $.name señala la propiedad name y $[0] el primer elemento de un array. Las comillas importan: $["0"] es una propiedad llamada 0, no un índice. Una clave que contiene un punto, como a.b, se escribe $["a.b"] para conservarlo como parte del nombre.
La notación con puntos usa corchetes cuando la clave los necesita; la notación con corchetes los usa en todas las propiedades. Puedes reconstruir un mapa con cualquiera de las dos o combinarlas. Estas rutas no admiten filtros, comodines ni intervalos de JSONPath.
El mapa es un objeto JSON no vacío. Sus valores son primitivas o contenedores vacíos; las rutas indican la estructura que los rodea. Los objetos y arrays vacíos se conservan: {"$.settings":{},"$.items":[]} reconstruye ambos. Una raíz primitiva o vacía usa una sola entrada, como {"$":null}. Un mapa vacío {} no permite saber cuál era el valor raíz.
Las rutas contradictorias se rechazan. Por ejemplo, {"$.a":1,"$.a.b":2} exige que a sea a la vez un número y un objeto. {"$.a":1,"$[0]":2} mezcla un objeto y un array en la raíz. Los índices deben empezar en cero y ser consecutivos, así que {"$[2]":"x"} tampoco es válido. No se sobrescriben valores si dos rutas, aunque estén escritas de distinta forma, señalan la misma ubicación.
Números y conversión de ida y vuelta
La entrada debe ser JSON estricto. Se rechazan comentarios, JSONC, JSON5 y claves duplicadas. Esto incluye claves que se vuelven iguales al decodificar los escapes, como en {"a":1,"\u0061":2}.
Los números mantienen su escritura original: 9007199254740993, 0.10000000000000001, -0 y 1E+02 no se reescriben. Un aviso de precisión se refiere a su representación interna en JavaScript; no significa que se haya redondeado la salida. Los números fuera del rango admitido, como 1e400, se rechazan.
Aplanar y reconstruir conserva los valores, las claves, las posiciones de los arrays y la escritura de los números dentro de los límites de la herramienta. El formato, los escapes y el orden de las propiedades pueden cambiar. El resultado usa saltos LF, sin BOM ni salto final.
Copia el resultado completo
La vista previa muestra hasta 20.000 unidades UTF-16 y puede terminar a mitad del JSON. Copiar JSON y Descargar JSON incluyen el resultado completo. Si el portapapeles no está disponible, usa el campo de copia manual. Las descargas son archivos UTF-8 llamados json-flattened.json o json-reconstructed.json.
Usar resultado como entrada coloca toda la salida en el editor y cambia al modo inverso. Ejecuta la operación cuando quieras continuar. Editar la entrada o las opciones retira el resultado anterior; cancelar conserva el texto de entrada.
| Límite | Máximo |
|---|---|
| Archivo local | 8.000.000 bytes |
| Texto de entrada o salida | 2.000.000 unidades UTF-16 |
| Contenedores anidados / segmentos de ruta | 200 |
| Valores JSON | 100.000 |
| Entradas del mapa | 50.000 |
| Una ruta | 10.000 unidades UTF-16 |
| Índice de array | 99.999 |
| Tiempo de operación | 15 segundos |
Un documento complejo puede alcanzar los límites de procesamiento antes que los de tamaño. Todo se procesa en el navegador; los documentos no se suben ni se guardan.