Convertir du CSV en JSON et inversement sans casser les données
Le CSV est un tableau en texte brut : un enregistrement par ligne, avec des champs séparés par un séparateur, en général une virgule. Il se casse lorsqu'un champ contient le séparateur, un guillemet double ou un saut de ligne, car le lecteur doit distinguer la structure du contenu. Respectez les règles de guillemets, vérifiez le séparateur et la ligne d'en-tête, et gardez les nombres à zéros initiaux sous forme de texte. La suite de cet article détaille ce qu'un aller-retour peut conserver ou non.
Convertisseur CSV vers JSONBesoin de CSV en JSON, ou l’inverseEssayer gratuitementCe qu'est vraiment un fichier CSV
Le CSV n'a pas de norme unique et faisant autorité, mais la RFC 4180 décrit la forme courante, que la plupart des lecteurs suivent. Ses règles principales tiennent en une courte liste :
- Chaque enregistrement occupe sa propre ligne, et la RFC indique que les lignes se terminent par un retour chariot et un saut de ligne, CRLF.
- Les champs sont séparés par des virgules.
- Un champ qui contient une virgule, un guillemet double ou un saut de ligne est entouré de guillemets doubles.
- Un guillemet double à l'intérieur d'un champ entre guillemets s'écrit sous forme de deux guillemets doubles.
Ainsi, la ligne 1001,"Smith, Ann",02134 comporte trois champs, car la virgule entre guillemets fait partie du contenu. Un découpage à chaque virgule en trouve quatre. Le lecteur de fixmint applique ces règles : un champ entre guillemets peut contenir le séparateur, des sauts de ligne et des guillemets doublés, et un guillemet non fermé est signalé avec la ligne où il commence.
Pourquoi le séparateur change
La virgule est le séparateur par défaut de la RFC, mais là où la virgule sert de séparateur décimal, de sorte que 1,5 désigne un et demi, les tableurs enregistrent souvent le CSV avec des points-virgules. Les fichiers séparés par des tabulations (TSV) évitent ce conflit dans la plupart des données, car les tabulations apparaissent rarement dans du texte.
Le menu « Séparateur » propose Auto, Virgule, Point-virgule, Tabulation et Barre verticale. Auto lit les dix premières lignes, compte chaque candidat hors des guillemets, et retient celui dont le nombre par ligne est le plus constant. Choisissez vous-même le séparateur lorsque Auto se trompe.
Conversion dans fixmint
L'exemple pas à pas utilise les options par défaut de l'outil Convertisseur CSV vers JSON.
Exemple détaillé
Collez ce CSV, avec « La première ligne est un en-tête » coché :
id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"
Avec « Convertir les nombres » désactivé et une indentation JSON de 2 espaces, l'outil renvoie :
[
{
"id": "1001",
"name": "Smith, Ann",
"zip": "02134",
"note": "She said \"hi\""
},
{
"id": "1002",
"name": "Bo",
"zip": "10001",
"note": "line one\nline two"
}
]
Avec « Convertir les nombres » activé, id et zip 10001 deviennent des nombres, et 02134 reste du texte.
Étapes
- Collez le CSV, ou déposez un fichier .csv, .tsv, .txt ou .json.
- Vérifiez « La première ligne est un en-tête », le « Séparateur » et « Convertir les nombres ». Choisissez une indentation JSON de 2 espaces, Tabulation ou Minifié.
- Copiez le résultat, ou téléchargez-le au format .json.
Garder les nombres sous forme de texte
Les nombres JSON ne peuvent pas avoir de zéros initiaux : 02134 n'est donc pas un nombre JSON valide. Les codes postaux, les numéros de téléphone et les codes produits doivent rester du texte, sinon le zéro disparaît. Avec « Convertir les nombres » activé, l'outil convertit 10001 mais garde 02134 sous forme de chaîne. L'option est désactivée par défaut. Elle ne convertit que les valeurs dont le séparateur décimal est le point, donc 1,5 dans un fichier à points-virgules reste tel quel.
Les identifiants longs demandent aussi de la vigilance. JavaScript, qui exécute la plupart des JSON dans le navigateur, stocke les nombres sous forme de valeurs à virgule flottante sur 64 bits. Les nombres entiers ne sont exacts que jusqu'à 9 007 199 254 740 991, soit deux à la puissance 53 moins 1. Le nombre 12345678901234567890 devient 12345678901234567000 lorsqu'un programme JavaScript le lit. L'outil écrit les chiffres tels qu'ils sont saisis, mais un programme qui analyse le JSON en JavaScript les arrondira. Conservez les identifiants sous forme de chaînes. Formater du JSON conserve lui aussi ces nombres exactement tels qu'ils sont saisis, et indique combien il en a conservés.
JSON imbriqué et retour vers le CSV
Le CSV est plat, alors que le JSON peut être imbriqué. La conversion du JSON en CSV crée une colonne pour chaque clé de l'ensemble des objets, dans l'ordre où chaque clé apparaît pour la première fois. Un objet ou une liste imbriqués sont placés dans leur cellule sous forme de texte JSON, un null devient une cellule vide, et true et false sont écrits en toutes lettres. Les lignes sont séparées par CRLF, et un champ n'est entre guillemets que s'il contient le séparateur, un guillemet, un saut de ligne ou des espaces en début ou en fin.
Une entrée qui commence par [ ou { est lue comme du JSON. Le bouton-pastille inverse le sens, libellé CSV → JSON ou JSON → CSV. Dans le sens JSON → CSV, les options de sortie affichent un menu « Séparateur » et une option « Pour Excel ».
Un aller-retour fait perdre des informations. Un null et une chaîne vide deviennent tous deux une cellule vide, et l'imbrication ne se retrouve pas : conservez donc le JSON d'origine si vous avez besoin de sa structure.
Excel, UTF-8 et la marque d'ordre des octets
Un fichier CSV est une suite d'octets, et le lecteur doit connaître l'encodage. L'UTF-8 gère les lettres accentuées et d'autres alphabets. Une marque d'ordre des octets (BOM), soit trois octets au début du fichier, indique que le fichier est en UTF-8. Sans elle, certains tableurs lisent le fichier avec une page de codes locale, et les lettres accentuées deviennent des caractères bizarres. Les tableurs transforment aussi souvent 02134 en 2134 lorsqu'ils ouvrent un CSV.
L'option « Pour Excel » ajoute la BOM uniquement au CSV téléchargé, jamais au texte copié, et seulement dans le sens JSON → CSV. L'outil retire une BOM de l'entrée, donc un fichier qui en contient déjà une se convertit sans erreur.
Cas particuliers
- Lignes irrégulières. Avec un en-tête activé, une ligne courte est complétée par des valeurs vides, et une ligne plus longue garde ses valeurs supplémentaires sous forme de column_N. Le résultat indique combien de lignes diffèrent de l'en-tête.
- En-têtes répétés ou vides. Un nom répété reçoit _2, _3 et ainsi de suite, et un nom vide devient column_N. Ces changements évitent que deux clés s'écrasent mutuellement.
- Guillemets courbes. Les guillemets typographiques d'un traitement de texte ne sont pas des guillemets CSV : un champ tel que « Smith, Ann » se découpe à sa virgule. Redressez-les d'abord avec Corriger un texte collé ou comme décrit dans le guide sur les guillemets courbes.
- Sauts de ligne entre guillemets. Un champ qui s'étend sur deux lignes forme un seul enregistrement, mais Supprimer les lignes en double découpe son entrée à chaque saut de ligne, et traiterait donc les deux moitiés comme des lignes distinctes. Convertissez en JSON et comparez les objets, ou vérifiez à la main. L'outil reste utile pour les listes à une valeur par ligne.
- Gros fichiers. La zone de résultat affiche les 100 000 premiers caractères, mais « Copier » et le téléchargement incluent la sortie complète.
- JSON invalide. Le convertisseur indique la ligne et la colonne d'une erreur, avec un symbole ^ sous le caractère fautif. Formater du JSON explique les erreurs courantes, et le guide sur les erreurs JSON les détaille davantage.
Des espaces parasites autour des champs, des lignes vides au milieu du fichier et des guillemets employés de façon incohérente causent la plupart des problèmes de CSV, bien avant que le séparateur ne compte. Commencez par le Nettoyeur de CSV, puis convertissez.
Traduit de Version originale anglaise avec l’aide de l’IA.
Commentaires
Aucun commentaire pour l’instant. Soyez le premier.


