Ir al contenido
Español
El banco de trabajoHerramientas que no suben nada
Un taller de la asociación ODERSANada sale, nada se guarda, nada nos llega.

El taller · CSV y JSON

Cómo funciona : CSV y JSON

El dato que casi nadie dice: «el formato CSV» no es una norma. Su documento de referencia lleva la mención «a título informativo» y él mismo escribe que hay diferencias considerables entre las implementaciones. Por eso esta herramienta MIDE el separador en vez de suponerlo, y le enseña lo que ha encontrado.

Abrir la herramienta

El sentido de la conversión se DEDUCE de lo que usted pega: un texto que empieza por una llave o por un corchete es JSON, y todo lo demás es CSV. Es la misma lógica que la caja cifrada y el PDF protegido de este sitio: no se le pide que elija un modo que no conoce.

El CSV es un formato sin norma, y de ahí vienen casi todos los disgustos. El documento de referencia lleva la mención «a título informativo», y él mismo escribe que hay diferencias considerables entre las implementaciones. En una hoja de cálculo europea, el separador es el punto y coma, porque allí la coma es el separador decimal. Así que la herramienta MIDE el separador: prueba los cuatro candidatos y se queda con el que da el número de columnas más regular, y luego enseña cuál ha escogido.

Las reglas del documento de referencia se aplican al pie de la letra, incluida la que se salta la mitad de los conversores: un campo entrecomillado puede contener un SALTO DE LÍNEA. Por eso el lector avanza carácter a carácter en vez de cortar el texto por líneas. Una comilla dentro de un campo entrecomillado se dobla, y la herramienta la escribe así en el sentido inverso.

Cómo funciona

  1. Pegue su CSV, o su JSON. La herramienta reconoce cuál de los dos es y enseña el sentido de la conversión.
  2. Compruebe el separador que ha medido, y la primera línea de encabezado. Son las dos únicas cosas que pueden engañar a un conversor.
  3. Copie o descargue el resultado. La tabla le dice cuántas filas y cuántas columnas se han leído.

Formatos aceptados

El sentido se deduce del texto. Un JSON tiene que ser una lista de objetos para dar una tabla de dos dimensiones: es la forma que producen casi todas las exportaciones.

Texto en formato CSV

Separador medido entre la coma, el punto y coma, la tabulación y la barra vertical. Los campos entrecomillados, las comillas dobladas y los saltos de línea dentro de un campo se tratan bien.

Texto en formato JSON

Una lista de objetos da una fila por objeto y una columna por cada clave encontrada. Un valor anidado se escribe en JSON dentro de su celda, y la herramienta lo avisa.

Ver la matriz de compatibilidad

Sus límites

No existe ninguna norma del CSV, y la herramienta no pretende lo contrario

El documento de referencia de 2005 está clasificado «a título informativo»: DESCRIBE un uso observado, no lo normaliza, y él mismo escribe que hay diferencias considerables entre las implementaciones. Consecuencia práctica: un archivo que un programa acepta otro puede rechazarlo, y no es culpa de nadie. La herramienta aplica las reglas de ese documento y enseña lo que ha medido, para que usted pueda juzgar.

Un JSON de varios niveles no se convierte en un CSV de varios niveles

Un CSV es una tabla plana: dos dimensiones, no tres. Cuando un valor es a su vez un objeto o una lista, la herramienta lo escribe en JSON dentro de su celda y se lo avisa, cosa que conserva la información sin fingir que la ha aplanado. Elegir por usted una convención de aplanamiento, con nombres de columna inventados, sería una decisión que no nos toca tomar.

La conversión a números se ofrece, y puede estropear un identificador

Un código postal que empieza por cero, un número de teléfono, un identificador de diecinueve cifras: convertirlos en números les hace perder el cero de delante o sus últimas cifras. La casilla viene marcada porque es lo que se espera de un archivo de mediciones, pero desmárquela en un archivo de referencias: todo se quedará como texto.

La marca de orden de bytes se ofrece para el CSV, y no por casualidad

Una hoja de cálculo muy extendida solo enseña bien un CSV en UTF-8 si el archivo empieza por esa marca: lo dice su documentación. Sin ella, los acentos se convierten en series de signos raros. Pero esa misma marca hace fallar a otros programas, que la leen como un carácter del primer campo. No hay una elección buena universal: la casilla existe, y su porqué está escrito al lado.

Preguntas sobre esta herramienta

¿Mis datos se envían a alguna parte?

No, y aquí importa: un archivo CSV es casi siempre una exportación de datos reales, a menudo con nombres y direcciones. Compruébelo en treinta segundos: abra el inspector con la tecla F12, pestaña «Red», vacíe la lista, y después pegue su archivo y conviértalo. No aparece ni una línea. Corte su conexión y vuelva a hacerlo.

Mi CSV lleva puntos y comas, ¿es un problema?

No, y hasta es el caso más corriente en Europa. Como aquí la coma hace de separador decimal, las hojas de cálculo usan el punto y coma para separar las columnas. La herramienta prueba los cuatro separadores posibles y se queda con el que da el número de columnas más regular, y luego le dice cuál ha escogido. Si su medición se equivoca, impóngalo usted en la lista.

Mis códigos postales pierden el cero de delante.

Desmarque «convertir en números lo que parece un número». Un código postal, un número de teléfono o un número de cuenta no son números: son series de cifras, y tratarlos como números les hace perder el cero de delante. La casilla viene marcada porque es lo que se espera de un archivo de mediciones, pero se desmarca con un clic y todo se queda como texto.

¿Por qué se rompen los acentos cuando abro el CSV en mi hoja de cálculo?

Porque una hoja de cálculo muy extendida solo reconoce el UTF-8 dentro de un CSV si el archivo empieza por una marca de orden de bytes: está escrito en su propia documentación. Marque la casilla que la añade y vuelva a abrir el archivo. Y cuidado con lo contrario: esa misma marca hace fallar a algunos programas, que la leen como un carácter del primer campo. No hay una elección buena universal, solo la elección que le conviene al destino.

Mi JSON tiene objetos dentro de objetos. ¿Qué pasa con esa estructura?

Se conserva, pero escrita en JSON dentro de la celda, y la herramienta se lo avisa. Un CSV es una tabla plana, de dos dimensiones: no hay una manera universal de meter ahí una estructura de tres niveles. Las convenciones existen, y fabrican nombres de columna como «direccion.ciudad», y cada una es una decisión arbitraria. Preferimos dejar su dato intacto y decirle dónde está.