Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
Vous pouvez convertir JSON en TSV gratuitement et sans compte : déposez le fichier ci-dessus et, une ou deux secondes plus tard, le résultat est prêt à télécharger. La conversion se fait dans votre propre navigateur : le fichier n’est donc jamais téléversé. Cela marche sous Windows, macOS et Linux comme sur iPhone et Android, et continue de marcher si vous coupez le réseau.
Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.
Ils sont convertis les uns après les autres et reviennent ensemble dans un ZIP.
JSON en TSV
La virgule est le caractère le plus courant en prose après l’espace, et un fichier délimité qui s’en sert comme séparateur doit échapper chaque valeur qui en contient une. Le mécanisme fonctionne, et c’est aussi la source de presque chaque import mal formé que quiconque a vu : un guillemet mal équilibré et le reste de la ligne atterrit dans les mauvaises colonnes.
Les tabulations apparaissent à l’intérieur de vraies données quasiment jamais. Personne ne tape de tabulation dans un champ d’adresse, dans une description de produit ou dans une zone de commentaire, parce que dans la plupart des interfaces la touche déplace le focus. C’est tout l’argument, et pour un travail ponctuel il est fort : le séparateur qui n’apparaît pas dans vos données n’a pas besoin d’être neutralisé.
Excel et Google Sheets lisent tous deux le texte séparé par tabulations depuis le presse-papier de manière native. Copiez la sortie convertie, cliquez sur une cellule, collez, et les données atterrissent en colonnes sans boîte de dialogue, sans question de délimiteur et sans assistant d’import. Un CSV collé de la même manière arrive comme une colonne de texte par ligne, ce qui explique pourquoi les gens finissent sur cette page.
Cela en fait la voie la plus rapide d’un export JSON vers quelque chose que vous pouvez trier et filtrer, et cela mérite d’être honnête sur le cas où c’est la mauvaise voie. Si le fichier doit être conservé, envoyé à quelqu’un ou importé à plusieurs reprises, enregistrez plutôt un CSV ou un classeur — le presse-papier est une commodité, pas un mécanisme de livraison, et les données collées ne portent aucune trace de leur provenance.
Chaque enregistrement du tableau devient une ligne, et les colonnes viennent des clés. Les enregistrements ne doivent pas être d’accord entre eux : la conversion recueille l’union de toutes les clés du fichier entier et laisse une cellule vide là où un enregistrement n’a rien, si bien qu’un export où certaines entrées portent un champ optionnel convertit sans qu’aucune ne soit abandonnée.
Cette réconciliation explique une surprise fréquente. Convertir les dix premiers enregistrements pour un test peut produire moins de colonnes que convertir l’export entier, parce que l’échantillon ne contenait pas les champs les plus rares. Si une colonne à laquelle vous vous attendiez manque, la raison est presque toujours qu’aucun enregistrement du fichier ne la portait, ce qui est en soi utile à savoir.
Les réponses d’API renvoient rarement un tableau brut. Elles renvoient un objet avec une clé — results, data, items — dont la valeur est le tableau que vous voulez. La conversion reconnaît cette forme : un objet avec exactement une clé tenant un tableau est déballé, et les enregistrements à l’intérieur deviennent les lignes.
Un objet avec deux clés n’est pas déballé, parce qu’il n’y a aucun moyen de savoir laquelle d’elles est la donnée et laquelle est le curseur de pagination. Dans ce cas, l’objet entier devient une seule ligne avec des noms de colonnes pointés, ce qui a l’air faux et qui est le signal qu’il faut supprimer l’enveloppe dans un éditeur de texte et reconvertir.
JSON est un arbre et une table est une grille, donc l’imbrication doit aller quelque part. Elle va dans les noms de colonnes : un enregistrement ayant un objet client contenant une ville produit une colonne intitulée customer.city. Un niveau d’imbrication produit un tableau que quiconque sait lire, et deux est en général encore correct.
Au-delà, cela se dégrade vite. Les noms de colonnes s’allongent, le tableau devient très large, et la plupart des cellules sont vides parce que les enregistrements s’imbriquent différemment. Soixante colonnes à partir d’un export qui paraissait simple, c’est la forme des données qui transparaît plutôt qu’un défaut, et c’est un moment raisonnable pour décider que le JSON doit rester JSON.
Un enregistrement avec trois étiquettes devient trois colonnes nommées tags.0, tags.1 et tags.2. C’est honnête, cela préserve chaque valeur, et c’est un mauvais tableau : l’enregistrement suivant avec cinq étiquettes ajoute deux colonnes supplémentaires, et trier par « la deuxième étiquette » est dénué de sens.
Là où le tableau porte le sens — une commande avec ses lignes, un billet avec ses commentaires — la réponse utile est deux tables jointes par un identifiant, comme le ferait une base de données. Là où il est secondaire, joindre les valeurs en une chaîne dans le JSON avant la conversion produit un tableur bien plus utilisable qu’une suite de colonnes numérotées.
L’affirmation selon laquelle les tabulations n’apparaissent jamais dans les données est vraie presque toujours et pas tout à fait toujours. Du texte copié d’un PDF, un extrait de code dans un champ de commentaire et tout ce qui est collé d’un autre tableur peuvent en contenir une. Un saut de ligne dans une valeur est encore plus courant.
Quand cela arrive, la valeur est entourée de guillemets doubles, ce qui est l’échappement standard et qui est lu correctement par chaque outil qui importe un fichier. Le presse-papier est l’endroit où c’est le moins fiable, parce que la gestion du collage varie selon les applications et les versions. Si vous savez que les données contiennent du texte libre avec des sauts de ligne, téléchargez le fichier et passez par le chemin d’import plutôt que de coller.
Les nombres sont écrits en nombres, les booléens en true et false en minuscules, et un null en cellule vide. Rien n’est entouré de guillemets qui n’a besoin de l’être, le fichier se lit donc exactement comme il se présente.
Ce qui se passe ensuite ne dépend plus du fichier. Excel et Sheets déduisent un type par colonne au collage, ce qui supprime les zéros initiaux des codes postaux et des codes produits, et transforme tout ce qui ressemble à une date en date. La défense est la même que toujours : formatez les colonnes de destination en texte avant de coller, ou utilisez un chemin d’import où les types de colonnes peuvent être définis. Ce n’est pas quelque chose que la conversion peut empêcher, parce que l’information est déjà correcte à l’arrivée.
Le presse-papier est un public pour un TSV ; l’autre est un logiciel qui attend des tabulations par défaut. La commande COPY de Postgres utilise la tabulation comme délimiteur par défaut, le read.delim de R attend des tabulations, et une longue traîne d’outils bio-informatiques et de traitement de journaux prennent des entrées tabulées et rien d’autre.
Pour ceux-ci, la sortie est prête telle quelle, avec une mise en garde qui mérite d’être vérifiée : les lignes se terminent par un simple saut de ligne plutôt que par un retour chariot suivi d’un saut de ligne, ce que les outils Unix attendent et que certains importateurs uniquement Windows n’aiment pas. Si un chargeur se plaint de la fin de ligne, la conversion se fait en un passage dans un éditeur de texte.
L’analyse et l’écriture sont toutes deux en JavaScript dans cet onglet. Rien n’est téléversé, il n’y a ni inscription ni quota journalier, et le niveau gratuit accepte jusqu’à 100 Mo — le plafond pratique étant votre propre mémoire, parce que le tableau entier doit être lu avant que quoi que ce soit puisse être écrit.
Cela vaut plus qu’il n’y paraît pour cette paire. Un export JSON est presque toujours la sortie brute d’une API — fiches clients, historiques de commandes, soumissions de formulaires — et il contient en général des champs auxquels personne n’a pensé parce que personne n’était censé les lire. Le faire entrer dans un tableur sans passer par le serveur de quiconque est la version simple de ne pas avoir à y penser du tout.
| JSON | TSV | |
|---|---|---|
| Nom complet | JavaScript Object Notation | Tab-Separated Values |
| Extension de fichier | .json | .tsv, .tab |
| Type de média | application/json | text/tab-separated-values |
| Première publication | 2001 | 1993 |
| Spécification | RFC 8259 | IANA text/tab-separated-values |
| Licence | Standard ouvert | Standard ouvert |
| Situation actuelle | Actuel | Actuel |
| S’ouvre dans un navigateur | Tous les navigateurs | Aucun navigateur |
| Envisagé à la place | XML, YAML, NDJSON | CSV |
Aucun navigateur ne lit TSV. C’est le moins portable des deux : mieux vaut s’assurer que le destinataire l’accepte avant de l’envoyer.
Les logiciels habituels ne se recoupent pas : JSON s’ouvre dans Visual Studio Code, jq et Postman, TSV dans Microsoft Excel, LibreOffice Calc et pandas — celui qui reçoit le résultat a donc besoin d’un logiciel de la seconde liste.
JSON a ete publié en 2001. La spécification est RFC 8259, et elle mérite d’être connue si le fichier doit survivre à l’outil qui l’a écrit.
TSV date de 1993, décrit par IANA text/tab-separated-values. Microsoft Excel, LibreOffice Calc et pandas le lisent.
Non. Cette conversion se fait entièrement dans votre navigateur : le fichier ne quitte donc pas votre appareil. Vous pouvez le vérifier vous-même — ouvrez l’onglet réseau des outils de développement et convertissez quelque chose. Vous verrez la page elle-même et les requêtes de statistiques et de publicité qui financent ce service, et pas une seule qui transporte votre fichier.
Oui. Pas de compte, pas de filigrane et pas de quota journalier à dépenser : cela tourne sur votre propre machine, vous pouvez donc revenir autant de fois que vous voulez. Le navigateur traite des fichiers jusqu’à 100 Mo, 100 à la fois.
JSON et TSV décrivent le contenu de façons radicalement différentes. La conversion est donc une reconstitution et non une copie : fidèle, mais pas identique octet pour octet. Les objets imbriqués sont aplatis en colonnes. Des données profondément imbriquées y perdent leur forme.
Aucun navigateur ne lit TSV. C’est le moins portable des deux : mieux vaut s’assurer que le destinataire l’accepte avant de l’envoyer.