Aplanar / Desaplanar JSON
Aplana objetos JSON anidados en claves con notación de punto (por ejemplo, user.address.city) y desaplanarlos de vuelta. Separador configurable y manejo de matrices.
Flattened Output
12 keys{
"user.id": 42,
"user.name": "Alice",
"user.roles.0": "admin",
"user.roles.1": "editor",
"user.address.city": "Berlin",
"user.address.country": "Germany",
"user.address.zip": "10115",
"user.preferences.theme": "dark",
"user.preferences.notifications.email": true,
"user.preferences.notifications.sms": false,
"meta.version": "1.0",
"meta.created": "2024-01-15"
}Cómo usar Aplanar / Desaplanar JSON
- 1Pega un objeto JSON anidado en la entrada.
- 2Elige Aplanar para convertir a claves de notación de punto, o Desaplanar para convertir de vuelta.
- 3Configura el carácter separador y copia el resultado.
ZenovayAnalytics
Ve quién está en tu sitio ahora mismo.
- Seguimiento de visitantes en tiempo real
- Privacidad primero, sin aviso de cookies
- Configurado en dos minutos
Herramientas relacionadas
Formateador y Validador JSON
Formatea, valida y embellece datos JSON con resaltado de sintaxis y detección de errores.Decodificador JWT
Decodifica e inspecciona tokens JWT. Consulta el encabezado, la carga útil y verifica firmas.Base64 Codificar/Decodificar
Codifica texto a Base64 o decodifica Base64 a texto. Soporta UTF-8 y datos binarios.Codificador/Decodificador de URL
Codifica o decodifica componentes de URL. Maneja caracteres especiales, cadenas de consulta y URLs completas.Preguntas frecuentes
¿Qué es el aplanamiento de JSON y cuándo es útil?▾
El aplanamiento de JSON convierte objetos anidados en un objeto de un solo nivel donde las claves anidadas se unen con un separador (generalmente punto). Ejemplo: {"user": {"name": "Alice", "address": {"city": "Berlin"}}} → {"user.name": "Alice", "user.address.city": "Berlin"}. Casos de uso: aplanar para almacenamiento en columnas de base de datos (migración de NoSQL a SQL), simplificar respuestas de API profundamente anidadas, alimentar pipelines de aprendizaje automático que esperan datos tabulares, indexación de documentos en Elasticsearch y envío de eventos de análisis con propiedades planas.
¿Cómo funciona el aplanamiento de arrays?▾
Los arrays se aplanan usando su índice como parte de la clave. Ejemplo: {"tags": ["js", "ts"]} → {"tags.0": "js", "tags.1": "ts"} con separador de punto, o {"tags[0]": "js", "tags[1]": "ts"} con notación de corchetes. Arrays anidados: {"matrix": [[1,2],[3,4]]} → {"matrix.0.0": 1, "matrix.0.1": 2, "matrix.1.0": 3, "matrix.1.1": 4}. Reconstruir arrays al desaplanar requiere saber qué claves son índices numéricos. Algunas herramientas conservan la estructura del array al desaplanar; otras la convierten en objetos.
¿Qué separadores se usan comúnmente para claves aplanadas?▾
Punto (.): el más común, intuitivo, entra en conflicto con claves que contienen puntos. Guion bajo (_): evita conflictos con puntos, usado en algunas convenciones de nomenclatura de columnas de bases de datos. Doble guion bajo (__): evita conflictos con guiones bajos simples, usado en variables de entorno de Django y valores de Helm chart. Barra inclinada (/): usada en JSON Pointer (RFC 6901) — "/user/address/city". Dos puntos (:): usado en algunos sistemas de configuración. Mejor práctica: elija un separador que no aparezca en sus nombres de clave existentes. Evite los puntos si las claves pueden contener nombres de paquetes o nombres de dominio.
¿Qué es JSON Pointer (RFC 6901)?▾
JSON Pointer es un estándar IETF (RFC 6901) para referenciar un valor específico dentro de un documento JSON. Formato: /clave/subclave/índice. Documento raíz: "". Primer elemento del array: "/0". Valor anidado: "/user/address/city". Caracteres especiales: "~0" representa "~", "~1" representa "/". Usado en: JSON Patch (RFC 6902) para actualizaciones parciales, $ref de JSON Schema, referencias de rutas de OpenAPI. Ejemplo: PATCH con {"op": "replace", "path": "/user/address/city", "value": "London"} cambia un valor anidado sin reemplazar todo el documento.
¿Cómo aplano JSON en JavaScript sin una biblioteca?▾
function flatten(obj, prefix = "", sep = ".") { return Object.entries(obj).reduce((acc, [key, val]) => { const newKey = prefix ? prefix + sep + key : key; if (val && typeof val === "object" && !Array.isArray(val)) { Object.assign(acc, flatten(val, newKey, sep)); } else if (Array.isArray(val)) { val.forEach((item, i) => { if (item && typeof item === "object") { Object.assign(acc, flatten(item, newKey + sep + i, sep)); } else { acc[newKey + sep + i] = item; } }); } else { acc[newKey] = val; } return acc; }, {}); }. Para la inversa (desaplanar), divida cada clave por el separador y reconstruya la estructura anidada.