Outils de développement · Convertisseurs de syntaxe
CSV à JSON et JSON à CSV : en-têtes, valeurs de chaîne et aplatissement Norme manquante de
· Comment ça marche
json csv formats de données
CSV est plat, sans type et ambigu quant à son propre délimiteur, tandis que JSON est imbriqué et typé. Cet article montre comment un convertisseur mappe les lignes aux objets et inversement, et où les informations sont perdues dans chaque direction.
Chaque numéro est revenu entre guillemets - l'exportation CSV a été convertie en JSON où 42 est devenu "42" et le code postal a conservé son zéro non significatif pour une fois.
Le classeur demande des exemples CSV-to-JSON, mais ToolAcre ne lit jamais CSV. Le moteur annonce exactement neuf paires dirigées, et aucune ne commence par CSV. La lecture d'un fichier nécessiterait des choix concernant le délimiteur, les guillemets, la présence d'en-tête et les types de cellules ; ce panel refuse de faire quatre suppositions silencieuses. L'article corrigé documente donc la direction expédiée JSON-to-CSV.
Cette décision à sens unique est visible à la fois dans l'interface et dans les erreurs. CSV apparaît comme une cible, pas une source, et tenter l'inverse renvoie `UNSUPPORTED_CONVERSION` avec des conseils pour utiliser un outil qui pose des questions sur le dialecte et les types. Un titre suggérant les deux directions donnerait une fausse idée du produit même si le sujet général était courant ailleurs.
CSV n'est pas lu ici : commencez par le chemin JSON-to-CSV que l'outil est réellement livré
Un tableau racine JSON fournit les lignes. Un objet simple devient une ligne. Un objet dont la seule clé contient un tableau déballe ce tableau et avertit qu'il a utilisé la propriété nommée. Les objets avec des clés frères et sœurs supplémentaires ne sont pas déballés, car cela supprimerait ou dupliquerait ces frères et sœurs.
Chaque enregistrement sélectionné est aplati avant la collecte des colonnes. Les enregistrements peuvent même être des scalaires à l’intérieur d’un tableau ; ceux-ci utilisent une colonne `value`. Un simple scalaire à la racine du document est refusé car une chaîne ou un nombre ne définit pas une table avec des enregistrements et des champs.
Choix des enregistrements dans JSON : tableaux, objets uniques et wrappers de tableau à une clé Les types
JSON ne survivent que sous forme de texte de cellule. Les booléens deviennent `true` et `false`, les nombres utilisent leur rendu décimal et null devient une cellule vide. CSV ne peut pas distinguer cette valeur nulle de la chaîne vide, donc l'écrivain compte les valeurs nulles et met en garde contre l'ambiguïté plutôt que d'appeler le résultat équivalent.
Les entiers larges sont déjà soumis à l'analyse JSON avant cette étape, donc un littéral numérique non sécurisé peut avoir perdu en précision. Mettre un identifiant entre guillemets préserve son texte. Les chaînes de type formule reçoivent par défaut une apostrophe supplémentaire lorsqu'elles commencent par `=`, `+`, `-`, `@`, tabulation ou retour chariot ; le numérique réel `-5` reste un nombre et n'est pas préfixé.
Pourquoi la sortie CSV ne peut pas conserver les types JSON
Les colonnes sont l'union des clés aplaties dans l'ordre d'apparition. Si une ligne contient `a` et une autre `b`, la sortie comporte les deux colonnes et remplit chaque champ manquant avec une cellule vide. Un avertissement signale des lignes irrégulières plutôt que des valeurs décalées sous les mauvais en-têtes.
Le tri des clés d'objet n'est pas appliqué à CSV ; la règle de l’écrivain est la première apparition dans les documents. Cela rend un exemple stable pour une entrée JSON fixe, mais ce n'est pas un contrat de schéma. Organisez délibérément les clés source ou post-traitez l'en-tête lorsqu'une importation en aval nécessite un ordre prescrit.
Aplatissement des données imbriquées : chemins de points tels que adresse.ville, tableaux sous forme de colonnes indexées ou de chaînes jointes, et point auquel CSV ne peut tout simplement pas conserver la forme
Les clés d'objet imbriquées se rejoignent par un point : `address.city`. Les tableaux utilisent le même séparateur et les mêmes indices numériques : `tags.0`, `tags.1`. Les objets et tableaux vides conservent une cellule vide sur leur propre chemin au lieu de disparaître. Cela produit un rectangle tout en admettant qu'un arbre a été projeté dans les noms.
Une clé source contenant déjà un point est ambiguë avec un chemin imbriqué. ToolAcre détecte et avertit mais n'invente pas de syntaxe d'échappement que les feuilles de calcul ne comprendraient pas. Les tableaux profonds ou longs peuvent également dépasser la limite de colonne 2,000, où la conversion refuse plutôt que d'émettre un tableau que les logiciels de tableur ordinaires ne peuvent pas utiliser.
Exemple concret : une liste de clients dans les deux sens : CSV à JSON, en modifiant un champ imbriqué, et JSON en retour à CSV avec l'imbrication aplatie.
Utilisez `[ {"id":"0042","address":{"city":"Oslo"},"tags":["new","west"],"note":"=1+1"}, {"id":"0043","address":{"city":"Lima"},"tags":[],"note":null} ]`. Les en-têtes incluent l'identifiant, l'adresse.ville, les tags.0, les tags.1 et la note. La deuxième ligne reçoit des espaces pour les indices de balises absents, et sa note nulle ne se distingue pas du texte vide.
La première note est préfixée par une apostrophe afin qu'une feuille de calcul la traite comme du texte. Les enregistrements se terminent par CRLF, les champs contenant un délimiteur, un guillemet ou une fin de ligne sont entre guillemets doubles et les guillemets intégrés sont doublés. La sélection d'un point-virgule ou d'une tabulation modifie le délimiteur ; une nomenclature UTF-8 facultative peut être ajoutée pour les consommateurs qui en ont besoin.
Exemple concret : un tableau client imbriqué aplati une fois dans CSV
CSV mal formé ou codé de manière ambiguë est en dehors de cette route car aucun CSV n'y entre. Le CSV Cleaner est l'endroit idéal pour choisir ou détecter le dialecte et réparer les devis. Ici, la source est stricte JSON et la sortie suit les conventions d'écriture documentées.
Le convertisseur limite également la sortie à 100,000 lignes et 2,000 colonnes. Les tableaux vides sont refusés car un fichier sans en-tête ni ligne ne comporte aucune forme de tableau. Ces limites sont des chemins de code imposés, et non des promesses de performances, et l'article n'invente pas de chiffres de débit.
À retenir : CSV est une table, JSON est un arbre - et comment le panneau des convertisseurs de syntaxe se déplace entre eux sans télécharger les lignes
JSON est un arbre typé ; CSV est un tableau de texte. ToolAcre choisit les lignes, aplatit les chemins, unit les colonnes, cite les champs et neutralise le texte dangereux, mais il ne peut pas conserver les valeurs nulles ou vides ni reconstruire l'imbrication ultérieurement. Ces pertes sont dues à un bruit structurel plutôt qu’à un bruit de formatage.
Utilisez cette direction lorsque la sortie sous forme de feuille de calcul est l'artefact prévu. Si vous avez besoin de CSV-to-JSON, choisissez un lecteur qui pose des questions sur le délimiteur, l'en-tête et les types. Refuser l'inverse est plus sûr que de renvoyer un JSON convaincant construit à partir de suppositions non vérifiées.