Pourquoi 9007199254740993 devient un autre ID
JSON.parse puis JSON.stringify changent ici le dernier chiffre de id. Ils écrivent aussi 1.00 comme 1 et 1e3 comme 1000. Ces deux changements conservent la valeur numérique ; celui de l’ID perd l’entier initial.
const source = '{"id":9007199254740993,"price":1.00,"scale":1e3}';
JSON.stringify(JSON.parse(source));
// {"id":9007199254740992,"price":1,"scale":1000}Le plus grand entier sûr de JavaScript Number est 9007199254740991. Tous les entiers supérieurs ne sont pas arrondis, mais des entiers distincts peuvent devenir la même valeur Number. Distinguez la syntaxe des nombres JSON des limites de précision du parseur utilisé.
ECMAScript: Number.MAX_SAFE_INTEGER
Clés dupliquées : syntaxe valide et interopérabilité sont distinctes
Si mode apparaît deux fois dans un objet, JSON.parse remplace la valeur précédente par la suivante. RFC 8259 recommande des noms uniques et décrit des traitements différents selon les programmes. Ne supposez pas que tous les parseurs agissent de la même façon.
JSON.stringify(JSON.parse('{"mode":"first","mode":"last"}'));
// {"mode":"last"}Moyoutil ne supprime pas automatiquement les clés dupliquées. Les préserver ne recommande pas leur usage. Vérifiez le système destinataire et le contrat de données ; résolvez les doublons lors de la création de la source.
Valider avec Moyoutil en préservant la notation initiale
formatJSON vérifie la syntaxe avec JSON.parse, mais construit la sortie à partir des tokens initiaux plutôt que de l’objet analysé. Il conserve grands entiers, notations décimales et exponentielles, doublons et ordre des clés. Les octets peuvent changer : espaces et sauts de ligne sont modifiés. La minification ne retire pas les espaces à l’intérieur des chaînes.
formatJSON('{"id":9007199254740993,"price":1.00,"scale":1e3}', 0).output
// {"id":9007199254740993,"price":1.00,"scale":1e3}Conservez l’original, collez-le dans l’outil JSON et formatez ou minifiez. Comparez IDs importants et notation avant le téléchargement. Modifier l’entrée efface le résultat et désactive la copie ; validez à nouveau. La limite est de 2MiB en UTF-8 et 128 niveaux d’imbrication.
La validation syntaxique ne vérifie ni règles métier, ni JSON Schema, ni interprétation du serveur. Convertir un nombre en chaîne change son type ; ce n’est pas une correction automatique. Vérifiez si le contrat permet les IDs textuels. Reproduisez les problèmes avec des données fictives, sans clés secrètes réelles ni informations personnelles.
Questions fréquemment posées
Une validation réussie préserve-t-elle les nombres sur un autre serveur ?
Non. L’outil conserve la notation, mais un serveur qui la convertit en nombres applique les limites de précision de son parseur.
La minification JSON crée-t-elle un ZIP ?
Non. Elle produit du texte JSON sans espaces syntaxiques et sauts de ligne inutiles. Elle ne crée pas de fichier ZIP.