Français

Données et feuilles de calcul · CSV Nettoyeur

CSV vs JSON : deux formats de données et les idées sur la structure qui les sous-tendent

· Contexte

csv json formats de données

Une grille plate de lignes et de colonnes à côté d'un objet de branchement JSON dont la branche imbriquée ne peut pas s'adapter directement
Illustration vectorielle originale de ToolAcre

CSV décrit un tableau ; JSON décrit un arbre. Cet article explique d'où vient JSON, pourquoi il comporte des types et des imbrications que CSV ne peut pas, et ce que signifie l'inadéquation à chaque fois que des données se déplacent entre les deux.

La même liste de clients est complètement différente sous la forme CSV et sous la forme JSON – pourquoi chaque format code une idée différente de la structure

Une table client semble compacte dans CSV car chaque ligne emprunte sa signification à un en-tête partagé. JSON répète les noms de propriété dans chaque objet et peut imbriquer une adresse ou une liste sous un client. Les deux dossiers expriment donc des capacités structurelles différentes même lorsque leurs faits visibles se chevauchent.

ToolAcre convertit l'intersection commune : un en-tête plat et des lignes de données deviennent un tableau de niveau supérieur d'objets plats. Il ne transforme pas la ponctuation des en-têtes en branches et ne déduit pas de tableaux à partir de colonnes répétées. Comprendre cette limite empêche qu'un convertisseur plat soit confondu avec un concepteur de modèle de données.

CSV sous forme de grille - lignes et colonnes, signification de position et rien au-delà du texte

Dans cette implémentation, CSV est un tableau rectangulaire de chaînes. La première ligne fournit les noms d'en-tête et chaque cellule suivante reçoit une signification de sa position dans la colonne. Les lignes courtes sont remplies et les lignes longues sont averties, car la position ne fonctionne de manière fiable que lorsque la largeur de la ligne correspond à l'en-tête.

Il n'y a pas de cellules numériques natives, booléennes, objets ou nulles. Les guillemets protègent la syntaxe mais n'attribuent pas de type. Une séquence de chiffres et le mot true restent des valeurs textuelles, ce qui maintient les identifiants stables et demande au consommateur d'appliquer un schéma là où il en existe réellement.

Dans ToolAcre, les cellules CSV sont des chaînes positionnées sous une ligne d'en-tête

Le classeur demande l'origine et l'historique des normes de JSON au début des années 2000, mais ce référentiel n'est pas une source pour ces dates ou publications. Le comportement vérifiable est que le navigateur utilise `JSON.parse` et `JSON.stringify`, acceptant un tableau d'objets de niveau supérieur pour la conversion en table.

Invalid JSON reçoit une erreur d'analyse spécifique, une racine autre qu'un tableau est rejetée et les tableaux contenant des primitives ne sont pas pris en charge. Ces limites d'exécution comptent plus pour un visiteur qu'une chronologie non citée. Le contexte historique doit provenir de normes primaires extérieures à l’ensemble source de cette tâche.

JSON l’historique des normes est une preuve extérieure au référentiel ; la forme d'exécution prise en charge est vérifiable

Un objet JSON porte chaque clé à côté de sa valeur, tandis qu'une cellule CSV s'appuie sur l'en-tête au même index. ToolAcre calcule une fois les clés non ambiguës, puis mappe chaque ligne par position. Les cellules représentées manquantes deviennent des chaînes vides afin que les objets partagent un jeu de clés stable.

Cette auto-description a une taille et un coût de répétition, mais rend chaque enregistrement JSON compréhensible sans localiser séparément un en-tête. À l’inverse, modifier l’ordre d’une colonne CSV sans son en-tête détruit le sens. La conversion doit conserver les noms et les positions appariés tout au long du tableau.

Arbres et tables : imbrication, tableaux et clés facultatives, et pourquoi ils n'ont pas de place naturelle dans une rangée Les valeurs

JSON peuvent contenir des objets et des tableaux, tandis qu'une cellule CSV ne peut pas créer de branche nativement. Dans le sens inverse, ToolAcre sérialise une valeur imbriquée avec `JSON.stringify` et place ce texte JSON dans une cellule. Il ne crée pas de colonnes adresse_ville ni de lignes de balises supplémentaires.

Les clés facultatives dans les enregistrements JSON deviennent l'union des colonnes dans l'ordre d'apparition, avec des espaces là où un objet n'a pas de clé. Il s'agit d'un aplatissement défendable pour les objets plats clairsemés. Il ne fournit pas de cartographie naturelle pour les arbres arbitraires, et l'itinéraire le dit plutôt que de le deviner.

Exemple concret : un enregistrement avec une adresse imbriquée et une liste de balises, affiché dans JSON puis forcé dans les colonnes CSV

Une ligne plate CSV `id,name,city` suivie de `001,Ada,London` se convertit proprement en un objet avec trois propriétés de chaîne. Si JSON contient à la place `address: {city: "London"}` et `tags: ["math","code"]`, la conversion inverse écrit ces valeurs imbriquées sous forme de chaînes JSON sous les colonnes d'adresse et de balises.

Le chargement de CSV produit à nouveau des chaînes contenant la syntaxe JSON, et non des valeurs imbriquées reconstruites. Une application ultérieure pourrait analyser ces cellules selon son propre schéma, mais pas ToolAcre. La comparaison travaillée isole exactement où se termine la structure du tableau et où commence la structure arborescente.

Exemple concret : les champs plats sont convertis directement, tandis que les JSON imbriqués sont conservés uniquement sous forme de texte de cellule inversé.

JSON Les lignes, les langages de schéma et les analyseurs de streaming sont en dehors de l'implémentation. La sortie est un tableau indenté et l'entrée du fichier est lue en mémoire avant la conversion. Ne déduisez pas la diffusion en continu enregistrement par enregistrement de la présence d'un analyseur.

De même, l'outil ne valide pas les propriétés ou les plages numériques requises. Il protège les clés d'objet des en-têtes vides et en double et signale la forme des lignes, mais l'exactitude sémantique reste la responsabilité du consommateur. La syntaxe plate peut être valide alors que les données métier sont erronées.

Sachez vers quelle structure vous vous dirigez - comment le ToolAcre CSV Cleaner convertit les données tabulaires plates entre CSV et JSON

Sachez quelle structure attend la destination. Pour les exportations plates, ToolAcre propose un pont transparent : les en-têtes deviennent des clés uniques, les lignes deviennent des objets et les valeurs restent des chaînes. Pour les modèles d'application imbriqués, définissez un mappage plutôt que de forcer les branches via des conventions de dénomination de colonnes accidentelles.

Prévisualisez le tableau, résolvez les lignes irrégulières et inspectez le JSON généré avant le téléchargement. Le convertisseur est plus puissant lorsqu'il est utilisé dans son intersection étroite des formats. Cela n’efface pas leur différence conceptuelle, et un flux de travail fiable ne devrait pas le demander.