Convertisseur CSV / JSON
Collez du CSV ou du JSON dans l'un des deux champs : la conversion vers l'autre format se met à jour en direct.
Ce que dit la RFC 4180
La RFC 4180 est le document de référence qui décrit le format CSV. Elle tient en quelques règles : une ligne par enregistrement, des champs séparés par un caractère unique, une première ligne facultative servant d'en-tête, et surtout un mécanisme d'échappement par guillemets doubles pour les valeurs qui contiendraient elles-mêmes un séparateur, un guillemet ou un retour à la ligne. C'est exactement ce jeu de règles que cet outil implémente, dans les deux sens.
| Cas | Écriture CSV | Règle |
|---|---|---|
| Valeur ordinaire | Paris | Aucun guillemet nécessaire. |
| Valeur contenant le séparateur | "Lyon, 3e arrondissement" | La valeur doit être entourée de guillemets doubles, sinon elle est lue comme deux colonnes. |
| Valeur contenant un guillemet | "Le ""Petit"" Café" | Le guillemet interne est doublé, et la valeur entière encadrée de guillemets. |
| Valeur sur plusieurs lignes | "12 rue Blanche 75009 Paris" | Un retour à la ligne est autorisé à l'intérieur des guillemets ; il ne termine pas l'enregistrement. |
| Valeur vide | a,,c | Deux séparateurs consécutifs produisent une chaîne vide, pas une valeur nulle. |
Deux écarts par rapport à la lettre de la norme méritent d'être connus. La RFC impose la virgule comme séparateur ; en pratique les exports francophones utilisent massivement le point-virgule, donc l'outil détecte le séparateur au lieu de l'imposer. La RFC impose également des fins de ligne CRLF ; l'outil accepte aussi bien CRLF que LF en lecture, et écrit du CRLF en sortie, la forme la mieux comprise par Excel. Enfin, une colonne d'en-tête vide est refusée : sans nom, la clé JSON correspondante serait ininterprétable.
Dans quel sens convertir, et pourquoi
CSV vers JSON sert surtout à alimenter du code à partir d'un fichier produit par quelqu'un d'autre : un export de CRM, un extrait de base de données, une liste envoyée par un client. Vous obtenez un tableau d'objets directement collable dans un fichier de test, une seed de base de données, un mock d'API ou un jeu de données de démonstration, sans écrire de parseur jetable.
JSON vers CSV répond au besoin inverse : rendre lisible par un humain non technique une réponse d'API ou un log structuré. Un responsable produit ouvrira le CSV dans un tableur, triera, filtrera, fera une somme — ce qu'aucun visualiseur JSON ne remplace. C'est aussi la façon la plus rapide de préparer un import dans un outil qui n'accepte que du tabulaire. Gardez à l'esprit que la conversion est destructrice dans ce sens : un objet imbriqué finit sérialisé dans une cellule, et le tableur n'y verra qu'un texte.
L'outil compte les virgules et les points-virgules présents sur la première ligne non vide, en ignorant ceux situés à l'intérieur de guillemets, et retient le plus fréquent. En cas d'égalité, la virgule l'emporte. Le point-virgule est courant dans les exports français, Excel notamment, parce que la virgule y sert de séparateur décimal. Le séparateur détecté est ensuite réutilisé pour la conversion inverse, JSON vers CSV.
Ces valeurs doivent être entourées de guillemets doubles, conformément à la RFC 4180, et un guillemet interne s'écrit en le doublant (""). L'outil lit ce format correctement, y compris quand la valeur contient un retour à la ligne, et il le regénère automatiquement dans le sens JSON vers CSV dès qu'une valeur contient le séparateur, un guillemet ou un saut de ligne.
Parce que le CSV ne porte aucune information de type : tout y est du texte. La conversion CSV vers JSON n'invente donc pas de type et produit uniquement des chaînes de caractères — 42 devient "42", true devient "true". Ce choix évite les conversions destructrices classiques, comme un code postal 06000 transformé en nombre 6000 ou une référence produit lue comme une date.
Un tableau d'objets, par exemple [{"nom":"Jean","ville":"Paris"}]. Chaque objet devient une ligne du CSV et l'ensemble des clés rencontrées, tous objets confondus, forme les colonnes : un objet auquel il manque une clé produit simplement une cellule vide. Une valeur qui n'est pas une chaîne — nombre, booléen, objet imbriqué — est écrite dans la cellule sous sa forme JSON.
Chaque ligne doit compter exactement autant de champs que la ligne d'en-tête, faute de quoi l'association colonne/valeur serait arbitraire. Le message indique le numéro de la ligne fautive et le nombre de colonnes trouvées. Dans la grande majorité des cas, la cause est une valeur contenant le séparateur ou un guillemet sans être encadrée de guillemets doubles.
Non. Toute la conversion se fait localement dans votre navigateur, en JavaScript. Aucune donnée saisie n'est transmise à un serveur, même en cas d'erreur, et rien n'est conservé après la fermeture de l'onglet.