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 // 4Un 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}'); // acceptedDistinguer 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.