Les lignes du texte source et du contenu diffèrent

Dans une chaîne JSON, une barre oblique inverse suivie de n représente un saut. Deux barres laissent une barre et n comme deux caractères dans la valeur analysée. Les deux exemples sont valides, mais les valeurs text ont des longueurs de 3 et 4.

{"text":"A\nB"}
{"text":"A\\nB"}

JSON.parse('{"text":"A\\nB"}').text.length // 3
JSON.parse('{"text":"A\\\\nB"}').text.length // 4
Schéma comparant un caractère LF avec une barre oblique inverse et n entre A et B
Schéma original issu des entrées exécutées. Les nombres indiquent le length JavaScript du contenu text analysé, pas la taille du fichier JSON en octets.

Un saut réel dans une chaîne provoque une erreur

RFC 8259 impose un échappement pour les caractères de contrôle U+0000 à U+001F dans les chaînes, dont LF littéral. Entre les jetons, LF, CR, tabulations et espaces sont permis. Les tests ont rejeté LF dans la chaîne, mais accepté un objet sur plusieurs lignes.

const invalid = '{"text":"A' + '\n' + 'B"}';
formatJSON(invalid); // throws

formatJSON('{\n"text":"AB"\n}'); // accepted

RFC 8259 §7: Strings · RFC 8259 §2: JSON Grammar

Distinguer formatage et interprétation du contenu

Moyoutil conserve les jetons des chaînes et modifie leur indentation extérieure. Il ne transforme pas \n en saut visible dans le contenu. La minification conserve aussi les échappements. En cas d’erreur, examinez guillemets et barres près de la position indiquée. En ajouter partout peut modifier des valeurs correctes.

Exécutez le formatage et la validation avec les exemples, puis comparez le résultat minifié. Pour une valeur contenant un saut, sérialisez la chaîne avec JSON.stringify lors de la création du JSON et vérifiez la valeur avec JSON.parse. La validation syntaxique ne vérifie pas les champs obligatoires d’un schéma API.

Questions fréquemment posées

La minification supprime-t-elle les sauts dans les valeurs ?

Non. Elle réduit les espaces hors des chaînes. Cet outil conserve leurs échappements, donc les sauts restent dans les valeurs analysées.