Convertir JSON a CSV
Pega un arreglo de objetos y recibes un CSV. Las columnas son la unión de todas las claves que aparecen, en el orden en que se ven por primera vez, así que las filas a las que les falta un campo quedan con un hueco en blanco en lugar de correr todo lo demás hacia un lado. El entrecomillado sigue la RFC 4180: los campos que contienen el delimitador, una comilla o un salto de línea van entre comillas, y las comillas internas se duplican.
Excel espera punto y coma en las configuraciones regionales que usan la coma como separador decimal. Si tus campos llegan todos apretados en la celda A1, este es el motivo.
El CSV es una costumbre, no un estándar
La RFC 4180 se publicó en 2005 y se describe a sí misma como informativa. Documenta lo que la mayoría ya venía haciendo, en vez de dictar lo que había que hacer, y bastante software la ignora. Por eso tantas veces hacen falta tres intentos para importar un CSV. Las reglas que sigue esta herramienta son las de la RFC, porque son lo más parecido que hay a un denominador común:
- Un campo se envuelve en comillas dobles cuando contiene el delimitador, una comilla doble, un retorno de carro o un salto de línea.
- Una comilla doble dentro de un campo entrecomillado se escribe dos veces.
Alan "Turing"se convierte en"Alan ""Turing""". Escapar con barra invertida es otra convención distinta y la mayoría de los importadores no la entiende. - Las filas terminan con CRLF, que es lo que pide la RFC y con lo que Excel se lleva mejor. Todo lo que corre en Unix lo lee sin problema.
Aquí también se entrecomillan los campos con espacios al principio o al final. La RFC no lo exige, pero muchos parsers recortan los espacios que no van entre comillas y casi nunca es lo que quieres.
Convertir un árbol en un rectángulo
Esta es la parte que no se puede hacer limpiamente, solo se puede elegir. El JSON anida; el CSV no. Tres casos y qué pasa con cada uno:
- Un objeto anidado se aplana en columnas con puntos, así que
{"address":{"city":"Londres"}}se convierte en una columna llamadaaddress.city. Desactiva el aplanado y el objeto entero cae en una sola celda como texto JSON. - Un arreglo de valores se escribe como texto JSON en una sola celda:
["maths","notes"]queda exactamente así. Expandirlo entags.0,tags.1significaría que una sola fila con cuarenta tags le agrega cuarenta columnas a todas las demás. - Un arreglo de objetos, el caso de uno a muchos, no tiene ninguna representación plana honesta. Pedidos con sus líneas, publicaciones con sus comentarios: o dejas el JSON dentro de una celda o repites los campos del padre una vez por cada hijo, y las dos opciones pierden información, cada una para su lado. Si necesitas la segunda, divide el JSON en dos tablas y conviértelas por separado.
Las columnas son la unión de todas las claves de todas las filas, en el orden en que se ven por primera vez. A la fila a la que le falta una clave le toca una celda vacía, y por eso la cantidad de filas y de columnas se mantiene estable aunque tus objetos no lo sean.
Los problemas de Excel
Entre un archivo CSV correcto y una hoja de cálculo correcta hay tres cosas que salen mal, y ninguna es culpa del archivo.
La codificación. Excel en Windows todavía lee un .csv normal con la página de códigos heredada del sistema, así que José llega como José. Una marca de orden de bytes UTF-8 al principio del archivo le dice otra cosa, y para eso está esa casilla, que viene marcada. El BOM solo entra en el archivo descargado, nunca en el texto copiado, porque todo lo demás en el mundo lo trata como basura.
Los tipos. Abrir un CSV con doble clic deja que la hoja de cálculo adivine. Los ceros a la izquierda desaparecen, así que el código postal 01234 se vuelve 1234. Los identificadores numéricos largos pasan a notación científica y pierden sus últimos dígitos. Cualquier cosa que se parezca vagamente a una fecha se convierte en fecha, con el formato de la configuración regional. Mejor usa Datos y después Desde texto/CSV, y marca como Texto las columnas problemáticas durante la importación.
Las fórmulas. Una celda cuyo texto empieza con =, +, @ o una tabulación se evalúa como fórmula en lugar de mostrarse. Eso es inyección de CSV, y es una vía de ataque real cuando los datos vinieron de usuarios. Esta herramienta cuenta esos campos y te avisa, pero no los neutraliza, porque la solución habitual — anteponer un apóstrofo — arruina el valor para todo lo que lea el mismo archivo y no sea una hoja de cálculo. Decide según a dónde va el archivo.
Lo que falta
No hay streaming. El JSON, el valor ya analizado y el CSV terminado están todos en memoria al mismo tiempo, así que unos pocos megabytes se manejan cómodos y cien no. Los números se escriben tal como los imprime JavaScript, lo que significa que un entero más allá de 2^53 ya perdió precisión antes de llegar a esta herramienta. Y tanto null como la cadena vacía salen como una celda vacía: el CSV no tiene forma de distinguirlos, así que esa diferencia no sobrevive al viaje.
Preguntas frecuentes
¿Qué forma tiene que tener mi JSON?
Lo normal es un arreglo de objetos, un objeto por fila. Un solo objeto también funciona y produce una fila. Un arreglo de valores sueltos se convierte en una tabla de una sola columna encabezada "value". Lo demás no tiene filas adentro y se rechaza.
¿Por qué mis columnas quedaron todas apretadas en la celda A1?
Tu hoja de cálculo espera otro delimitador. Excel sigue el separador de listas del sistema, que en gran parte de Europa y de América Latina es el punto y coma. Cambia el delimitador a punto y coma y vuelve a abrir el archivo.
¿Conviene dejar el BOM UTF-8?
Déjalo si el archivo se va a abrir en Excel en Windows. Quítalo si el archivo va a un script, a un cargador de base de datos o a un pipeline de Unix, donde esos tres bytes de más pueden aparecer pegados al nombre de la primera columna.
¿Puedo obtener una fila por cada elemento de un arreglo anidado?
Aquí no. Eso significaría duplicar todos los campos del padre en las filas del hijo, y la herramienta no puede saber qué arreglo querías expandir. Divide los datos en una tabla padre y una tabla hija con un id en común, y convierte cada una.
¿Los datos se envían a algún servidor?
No. El análisis, el aplanado, el entrecomillado y la descarga ocurren en esta pestaña. El archivo descargado se arma a partir de un blob en memoria y nunca sale de tu computadora.
Última actualización 19 de septiembre de 2026