Français

Données et feuilles de calcul · CSV Nettoyeur

Conversion entre CSV et JSON : formes, types et ce qui est perdu

· Comment ça marche

csv json formats de données

Une grille rectangulaire CSV se transformant en une rangée d'objets plats JSON tandis que chaque valeur reste du texte.
Illustration vectorielle originale de ToolAcre

CSV est du texte plat et JSON est des données imbriquées et saisies, donc la conversion entre eux implique des décisions. Cet article explique les formes JSON courantes pour les données tabulaires, comment les types sont déduits ou non et ce qui ne peut pas survivre à l'aller-retour.

Une API veut JSON, l'exportation est CSV et chaque nombre arrive sous forme de chaîne - pourquoi les deux formats ne sont pas d'accord sur les types

Une exportation sous forme de feuille de calcul peut afficher 42 sans indiquer si ces caractères signifient un décompte, un code produit ou un identifiant. JSON peut distinguer un nombre d'une chaîne, mais la source CSV ne peut pas fournir cette distinction. ToolAcre choisit donc la représentation conservatrice : chaque cellule devient une chaîne JSON, comprenant des chiffres, des mots d'apparence vraie et des cellules vides.

Cette décision conserve le texte tel que 0012 intact et rend la conversion prévisible pour une intégration d'API. Cela signifie également que le code en aval doit convertir les champs selon son propre schéma avant d'effectuer des opérations arithmétiques. Traiter le fichier généré comme déjà saisi déplace simplement une hypothèse du convertisseur vers un code d'application moins visible.

La forme cible habituelle : un tableau d'objets classés par en-tête, et pourquoi les en-têtes doivent donc être propres et uniques

La route produit un tableau de niveau supérieur avec un objet pour chaque ligne de données. Les cellules d'en-tête deviennent des clés d'objet et les valeurs sont extraites des mêmes positions de colonne. Un troisième en-tête vide devient column_3, tandis qu'un deuxième en-tête nommé id devient id_2 au lieu d'écraser le premier champ id.

Des noms propres et uniques sont utiles, mais le convertisseur ne met pas en minuscules, ne translitère pas et ne remplace pas les espaces. Il coupe un en-tête uniquement lors du calcul de la clé, puis invente un nom de position ou un suffixe numérique si nécessaire. Si une API nécessite customer_email plutôt que Customer Email, renommez délibérément cette colonne avant de vous fier au contrat de sortie.

Formes alternatives : tableau de tableaux et d'objets orientés colonnes, et quand chacun est le mieux adapté

Le plan propose des tableaux de tableaux et d'objets orientés colonnes comme cibles sélectionnables. Ce sont des conceptions de données raisonnables, mais cette interface ne les propose pas. Sa sortie est toujours un tableau JSON d'enregistrements plats saisis par la première ligne CSV, indentés de deux espaces pour une inspection lisible.

Ce choix restreint élimine toute ambiguïté quant à l'endroit où se trouve le nom d'une colonne et conserve la même forme pour chaque enregistrement. Si un autre consommateur attend des tableaux, transformez le JSON téléchargé sous le schéma de ce consommateur. Affirmer que ToolAcre choisit parmi plusieurs présentations décrirait des contrôles et des branches qui n'existent pas dans la configuration ou dans le code du panneau.

Ce convertisseur émet une forme : un tableau de niveau supérieur d'objets plats

Aucune estimation de type ne se produit. Le texte CSV 42 devient "42", false devient "false" et un espace devient "" plutôt que null. Ceci est explicite dans l'enregistrement et l'implémentation de l'outil, qui mappent les cellules directement aux propriétés de chaîne. La route n'inspecte pas une colonne et décide que toutes les valeurs non vides sont numériques.

La préservation des chaînes sépare également cet article de la discussion publiée sur les applications de feuilles de calcul modifiant les zéros non significatifs, les dates et les identifiants longs. Ici, il s’agit du contrat réel du convertisseur : il évite ce type de coercition. Les consommateurs restent responsables d’analyser les quantités connues et de laisser les identifiants intacts.

Les types sont conservés sous forme de texte ; ToolAcre n'effectue aucune inférence

Dans le sens inverse, ToolAcre accepte un tableau JSON de niveau supérieur dont les éléments sont des objets. Il crée des colonnes à partir de l'union des clés de chaque objet, dans l'ordre d'apparition, afin qu'un champ introduit par un enregistrement ultérieur ne soit pas perdu. Les propriétés manquantes, nulles et non définies deviennent des cellules CSV vides.

Un objet ou un tableau stocké dans une propriété est sérialisé sous forme de texte JSON à l'intérieur de cette cellule. Cela préserve une représentation textuelle mais ne transforme pas la structure imbriquée en colonnes ou lignes supplémentaires. Une racine autre qu'un tableau et un tableau contenant des valeurs primitives sont rejetés car ni l'un ni l'autre ne correspond au modèle de table pris en charge par cette route.

JSON-to-CSV accepte un tableau d'objets et écrit les valeurs imbriquées sous forme de texte JSON

Considérez le nom, actif, le nombre suivi de Ada, vrai, 007. Le résultat JSON est un tableau contenant un objet avec le nom "Ada", actif "true" et le compte "007". La conversion de ce tableau d'objets plats produit les trois mêmes cellules textuelles, car aucune inférence de type n'a supprimé les zéros ni converti le mot d'apparence booléenne.

Ajoutez maintenant un en-tête vide avant une autre valeur. La clé JSON devient column_4, les données restent donc accessibles même si le nom de la source est manquant. Cependant, ajoutez une cellule supplémentaire au-delà de la largeur de l'en-tête et le chargeur vous avertit d'une ligne irrégulière ; cette cellule excédentaire n'a pas de clé et est absente de JSON.

Ce que cela ne couvre pas : JSON profondément imbriqués, validation de schéma et diffusion en continu de documents JSON très volumineux

La route n'est pas un validateur de schéma, un aplatisseur récursif ou un processeur JSON de streaming. Il accepte une forme documentée et signale des JSON invalides ou des racines non prises en charge avec une erreur spécifique. Les enregistrements profondément imbriqués nécessitent un mappage conçu autour de leur domaine plutôt qu'une promesse automatique selon laquelle la ponctuation dans une clé crée une structure.

La vérification du fichier d'entrée autorise les fichiers jusqu'au 50 MB configuré, et l'analyse CSV se produit dans un travailleur. Ces faits n'établissent pas le streaming : le texte du fichier et les lignes complétées sont toujours matérialisés pour la conversion. Pour les très gros workflows JSON, utilisez un système dont l'implémentation documente explicitement l'analyse incrémentielle plutôt que de la déduire ici.

La validation du schéma, les tableaux primitifs et les racines non-tableaux sont en dehors de la forme acceptée

La conversion est un ensemble visible de choix : première ligne en tant que clés, objets plats en tant qu'enregistrements et chaînes en tant que valeurs. ToolAcre rend ces choix stables au lieu de deviner à partir d'un échantillon. Les en-têtes vides et répétés reçoivent des clés déterministes, tandis que des entrées irrégulières apparaissent avant qu'une plus-value sans nom puisse disparaître inaperçue.

Utilisez l'aperçu pour confirmer le délimiteur et la forme de la ligne, résoudre les avertissements, puis télécharger ou copier le JSON. Le fichier résultant convient au code connaissant son propre schéma. Il ne remplace intentionnellement pas ce schéma, et sa retenue est ce qui protège les identifiants textuels lors du changement de format.