Inicio › Herramientas para desarrolladores › Aplanar / desaplanar JSON

Aplanar / desaplanar JSON

Convierte un JSON muy anidado en un objeto de un solo nivel con claves de ruta como user.address.city u orders[0].sku, o reconstruye el JSON anidado a partir de claves planas. Elige el separador y el estilo de los arrays; los números y el orden de las claves se conservan exactamente.

Última actualización:

Todo se ejecuta en esta pestaña: tu JSON nunca se sube. Los números grandes y el orden de las claves se conservan exactamente. Consejo: Ctrl + Intro lo ejecuta.

Publicidad
Publicidad

Cómo usar Aplanar / desaplanar JSON

  1. Elige Aplanar o Desaplanar con las pestañas de arriba. Se carga un ejemplo para que veas el resultado enseguida.
  2. Pega tu JSON o abre un archivo .json. En el modo Desaplanar, pega un objeto cuyas claves sean rutas, como {"user.name": "Ada"}.
  3. Elige el separador y el estilo de los arrays: punto, guion bajo o barra, e items.0 o items[0] para los índices de arrays.
  4. Ajusta las opciones extra: niveles a aplanar, conservar {} y [] vacíos, ordenar las claves o que las claves numéricas creen arrays.
  5. Copia o descarga el resultado, o pulsa Intercambiar para volver a introducirlo y comprobar la ida y vuelta.

Ejemplo de aplanar y desaplanar

A la izquierda, el JSON anidado; a la derecha, la versión aplanada con el separador de punto predeterminado. Desaplanar convierte el lado derecho de nuevo exactamente en el lado izquierdo.

JSON anidadoJSON plano
{
  "user": {
    "name": "Ada",
    "address": { "city": "London" }
  },
  "tags": ["math", "poetry"],
  "meta": {}
}
{
  "user.name": "Ada",
  "user.address.city": "London",
  "tags.0": "math",
  "tags.1": "poetry",
  "meta": {}
}

Estilos de separador y de arrays

Cada herramienta espera un formato de ruta distinto. Elige el que entienda tu destino:

AjusteRuta de la ciudad del primer pedidoUso habitual
Separador ., índices con separadororders.0.address.cityNotación de punto de MongoDB, campos de Elasticsearch, archivos i18n, get de lodash
Separador ., índices entre corchetesorders[0].address.cityRutas de propiedades de JavaScript, nombres de campos de formularios, rutas al estilo jq
Separador _orders_0_address_cityEncabezados de columnas de CSV y hojas de cálculo, nombres de columnas SQL
Separador __orders__0__address__cityVariables de entorno (por ejemplo, la configuración de ASP.NET Core)
Separador /orders/0/address/cityRutas similares a JSON Pointer (RFC 6901) y claves de tipo archivo

Consejos para un viaje de ida y vuelta sin pérdidas

  • Conserva los objetos y arrays vacíos. Un {} o [] vacío no tiene valores que generen una ruta, así que sin esta opción desaparece al aplanar.
  • Elige un separador que no esté en tus claves. Si una clave como "file.name" contiene el separador, al desaplanar se divide en dos niveles. La herramienta te avisa cuando ocurre.
  • Claves de objeto numéricas. Las claves como "2024" o los ID de usuario parecen índices de array. Desactiva Las claves numéricas crean arrays al desaplanar para que sigan siendo claves de objeto.
  • Arrays con huecos. Si un objeto plano tiene items.0 e items.3, las posiciones 1 y 2 que faltan se rellenan con null, porque los arrays JSON no pueden tener huecos.

Preguntas frecuentes

¿Qué significa aplanar un JSON?

Aplanar convierte una estructura JSON anidada en un objeto de un solo nivel. Cada clave pasa a ser la ruta completa hasta un valor, unida con un separador, así que {"user": {"name": "Ada"}} se convierte en {"user.name": "Ada"}. El JSON plano es más fácil de cargar en hojas de cálculo, archivos CSV, índices de búsqueda, variables de entorno y herramientas de traducción (i18n).

¿Cómo se aplanan los arrays?

Cada elemento del array recibe su índice en la ruta. Con el estilo de separador, la segunda etiqueta de un usuario se convierte en user.tags.1; con el estilo de corchetes se convierte en user.tags[1], la notación que usan JavaScript y muchos lenguajes de consulta. Desaplanar entiende ambos estilos.

¿Cómo decide desaplanar entre objetos y arrays?

Cuando 'Las claves numéricas crean arrays' está activado, un segmento de ruta que es un número entero, como 0 o 12, crea un array, y los índices entre corchetes como [0] siempre lo hacen. Los índices que faltan se rellenan con null. Desactiva la opción si tus objetos usan claves numéricas, como ID, que deben seguir siendo claves de objeto.

¿Qué pasa si una clave ya contiene el separador?

Una clave como "file.name" se aplana en una ruta que parece de dos niveles, así que al desaplanarla se dividiría en file → name. La herramienta te avisa cuando ocurre; elige un separador que no aparezca en tus claves, como / o __, para obtener una ida y vuelta sin pérdidas.

¿Qué son las claves en conflicto al desaplanar?

Hay un conflicto cuando una clave usa una ruta como valor y otra la usa como padre, por ejemplo "a": 1 junto con "a.b": 2. Un valor no puede ser a la vez un número y un objeto, así que la segunda clave se omite y aparece en el mensaje.

¿Se conservan exactamente los números grandes?

Sí. La herramienta usa su propio analizador de JSON, que conserva cada número exactamente como está escrito, así que los ID mayores que 9,007,199,254,740,991 (2^53 − 1) no se redondean como lo haría JSON.parse de JavaScript. También se conserva el orden de las claves.

¿Se sube mi JSON a algún sitio?

No. El aplanado y el desaplanado se ejecutan por completo en JavaScript en esta página, así que tus datos nunca salen de tu dispositivo.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Conversores de datos y formatos de archivo →