100 % local — vos données ne quittent jamais votre navigateur

NDJSON en JSON — un seul tableau pour jq

Transformez du JSON délimité par des sauts de ligne en un seul tableau. Les lignes vides sont ignorées et une ligne cassée est désignée par son numéro.

Instantané Privé Zéro cookie
Indentation

Entrée NDJSON

Sortie JSON

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" et null sont 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.

Questions fréquentes

Que se passe-t-il si une ligne est mal formée ?
La conversion s’arrête et vous dit laquelle : `Invalid JSON on line 3`. Rien de partiel n’est rendu — un demi-tableau aurait l’air d’un résultat, et vous emporteriez les enregistrements manquants dans la suite. Corrigez la ligne et reconvertissez.
Les longs identifiants numériques survivent-ils ?
Oui, chiffre pour chiffre. Un identifiant de 19 chiffres dépasse ce qu’un nombre JavaScript contient exactement, et un convertisseur qui le lirait comme un nombre vous rendrait la valeur voisine sans un mot. Ici la lecture et l’écriture gardent toutes deux le littéral : `12345678901234567890` ressort tel quel.
Qu’est-ce qui compte pour une ligne ?
Une valeur JSON entière. Les lignes vides sont sautées, les fins `\r\n` ne posent pas de problème, et une marque d’ordre des octets en tête ne gêne pas. Deux objets sur la même ligne ne font pas deux enregistrements, en revanche : cette ligne est signalée invalide, NDJSON mettant une valeur par ligne — deviner où couper serait inventer des données.

Convertisseurs associés