Aplanar es lo que un documento anidado necesita antes de poder encontrar algo que no tiene concepto de anidacion: un archivo de entorno, una columna de hoja de calculo, un catalogo de traduccion, cualquier cosa construida a partir de pares de clave y valor sin estructura propia.
Usando el aplanador de JSON
Elige una direccion y un estilo de ruta, ya que no hay un unico estandar para
como debe escribirse una ruta aplanada. Se ofrecen tres formas, a.b.0,
a/b/0 y a.b[0], y la herramienta indica cual esta en uso en lugar de
elegir una silenciosamente.
Aplanando
{"user":{"name":"Ana","tags":["a","b"]},"empty":{}}
con el estilo con puntos devuelve:
{
"user.name": "Ana",
"user.tags.0": "a",
"user.tags.1": "b",
"empty": {}
}
Las claves anidadas se convierten en rutas con puntos, los elementos del arreglo reciben su indice agregado, y el objeto vacio se conserva como un valor por derecho propio en lugar de desaparecer, ya que sin el no habria nada a lo que darle una ruta y el documento no sobreviviria el viaje de ida y vuelta.
Dos casos genuinamente ambiguos, manejados abiertamente
Una clave que ya contiene el caracter separador produciria una ruta que nadie
podria leer correctamente, por lo que la herramienta la rechaza por nombre:
una clave como "a.b" bajo el estilo con puntos es rechazada con un mensaje
que nombra la clave y sugiere un estilo de ruta diferente, en lugar de
producir silenciosamente una ruta rota.
En la otra direccion, des-aplanando, un segmento de ruta compuesto solo de digitos podria significar tanto un indice de arreglo como una clave de objeto que resulta ser numerica, y nada en un documento aplanado indica cual es. “Los digitos son indices de arreglo” es un interruptor exactamente por esta razon: adivinar mal convierte un objeto con claves de ano en un arreglo con miles de ranuras vacias.
Viaje de ida y vuelta
Des-aplanando el ejemplo anterior, con el mismo estilo de ruta, devuelve el documento original exacto: el objeto anidado, el arreglo de dos elementos en su orden original, y el objeto vacio preservado en lugar de eliminado. Ese viaje de ida y vuelta es la verdadera prueba de que los puntos e indices de un estilo de ruta fueron leidos correctamente, ya que un supuesto incorrecto sobre la indexacion de arreglos generalmente solo se muestra una vez que conviertes de vuelta y comparas con el original.
Mantener contenedores vacios
Desactivar esto elimina objetos y arreglos vacios completamente en lugar de conservarlos como entradas aplanadas, lo cual es util cuando la forma plana se dirige a algun lugar que no puede contener un valor vacio en absoluto, como ciertos formatos de archivo de entorno.