Ce que fait cet outil
Du JSON délimité par des sauts de ligne entre, un tableau sort.
{"id": 1, "name": "Ada"}
{"id": 2, "name": "Grace"}
[
{
"id": 1,
"name": "Ada"
},
{
"id": 2,
"name": "Grace"
}
]
C’est tout le format : une valeur JSON par ligne, sans virgule entre elles, sans crochets autour. C’est ce qu’écrivent les chaînes de journalisation, ce qu’attendent bq load et bien des API de flux, et ce que produit jq -c.
Une ligne fautive est nommée
{"a": 1}
{oops}
Invalid JSON on line 3
La ligne vide est sautée sans un mot — un fichier NDJSON en finit souvent par une. La ligne mal formée arrête la conversion, et le message porte son numéro : vous y allez directement. Aucun tableau partiel ne vous est rendu : la moitié des enregistrements sans rien pour le dire est pire qu’une erreur.
Les longs nombres gardent leurs chiffres
{"id": 12345678901234567890}
[
{
"id": 12345678901234567890
}
]
Passé seize chiffres environ, un nombre JavaScript cesse d’être exact : lisez cet identifiant comme un nombre et vous en récupérez un autre, en silence. La lecture comme l’écriture gardent ici le littéral tel qu’il était écrit, et c’est ce qui fait qu’un fichier d’identifiants Twitter ou Discord survit au voyage.
Ce que l’outil ne fait pas
- Réordonner ni dédoublonner. Le tableau garde les lignes dans l’ordre où elles sont venues, répétitions comprises.
- Exiger des objets. Une ligne peut être n’importe quelle valeur JSON :
1,"x"etnullsont des enregistrements valides, et ils passent tels quels. - Couper une ligne. Deux valeurs sur une ligne, c’est une erreur, pas deux enregistrements.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.