mygems

Convertir un CSV a JSON

Cada fila, un objeto; cada encabezado, una clave.

  • Arreglo, JSON Lines o arreglos
  • Detecta números y booleanos
  • Los ID siguen siendo cadenas
  • No se sube nada

1.Abre el archivo

CSV o TSV. Arrástralo aquí o elige un archivo.

Por qué existe

Pasar de CSV a JSON parece la dirección fácil, y los conversores habituales la hacen fácil equivocándose con los tipos: todo se vuelve cadena, o todo lo que parece numérico se vuelve número, incluido el código postal con cero inicial y el ID de 18 dígitos que JavaScript no puede representar con exactitud. Esta herramienta decide cada columna según todos sus valores y deja en paz las que solo parecen números.

Qué hace

  • Escribe un arreglo de objetos con las claves de la fila de encabezado, JSON Lines con un objeto por línea, o un arreglo de arreglos con el encabezado primero.
  • Detecta las columnas formadas solo por números o por verdadero/falso y las escribe sin comillas.
  • Mantiene como cadenas las columnas con ceros iniciales o con más de 15 dígitos, porque un número JSON las alteraría.
  • Convierte las celdas vacías en null en lugar de una cadena vacía, o mantiene todo como cadenas si lo prefieres.
  • Aplica sangría para leerlo mejor o escribe el archivo más pequeño posible.

Qué forma elegir

Un arreglo de objetos es lo que esperan la mayoría de las API y del código JavaScript. JSON Lines va bien con archivos grandes y con herramientas de datos que procesan un registro a la vez, como BigQuery, Elasticsearch y jq. Un arreglo de arreglos es lo más compacto y deja explícito el orden de las columnas.

Preguntas

¿Por qué mi columna de ID sigue siendo una cadena?
Porque convertirla en número la alteraría. Cualquier analizador de JSON descarta el cero inicial, y los enteros de más de 15 o 16 dígitos pierden precisión en JavaScript. Si todos los valores de una columna son números simples sin ninguno de los dos problemas, se escribe como número.
¿Qué pasa con las celdas vacías?
Pasan a null cuando la detección de tipos está activada, ya que un CSV no puede distinguir una cadena vacía de un valor ausente. Con la detección desactivada, todos los valores, incluidos los vacíos, son cadenas.
¿Puede manejar JSON anidado?
El CSV es plano, así que el JSON que produce también lo es: un nivel de claves por registro. El camino inverso, de JSON anidado a CSV, lo hace la herramienta de JSON a CSV.