Qué es CSV
Un CSV es un archivo de texto donde cada línea es una fila y las comas separan los campos. No hay tipos, no hay formato y no hay una segunda hoja. Todo valor es texto hasta que algo más abajo decida otra cosa.
Casi cualquier base de datos, herramienta de análisis y hoja de cálculo lo lee y lo escribe, y por eso es lo que sale por defecto al exportar.
Qué es JSON
JSON es un formato de texto para datos anidados: objetos con claves, arrays, cadenas, números, booleanos y null. No tiene tipo fecha ni comentarios.
Todas las API web, la mayoría de los archivos de configuración y cualquier cosa que hable con JavaScript.
Qué cambia al convertir CSV a JSON
Leer un CSV obliga a decidir tres cosas que el archivo no dice: qué carácter separa los campos, cómo funcionan las comillas y en qué codificación están los bytes. Aquí el separador se deduce de las primeras líneas, los campos entrecomillados con comas o saltos de línea dentro se tratan bien, y el archivo se lee como UTF-8.
La forma la eliges tú. El array de objetos es la opción por defecto y la que espera casi todo el código. El array bidimensional ocupa menos. Los arrays por columna van bien con librerías de gráficos. El objeto indexado sirve para búsquedas por id.
Las filas planas pasan a ser registros. Cada encabezado se convierte en una clave y cada fila en un objeto que contiene esas claves.
Las celdas vacías obligan a decidir, porque un CSV tiene una sola manera de decir que no hay valor y JSON tiene tres: cadena vacía, null, o la clave directamente ausente. La cadena vacía es la opción por defecto porque es la única que va y vuelve sin perder nada.
Los encabezados repetidos chocarían como claves de un objeto, así que el segundo lleva sufijo. Dos columnas llamadas nombre pasan a ser nombre y nombre_2, en lugar de que una sobrescriba a la otra en silencio.