Warum 9007199254740993 zu einer anderen ID wird
JSON.parse und anschließendes JSON.stringify verändern hier die letzte Ziffer von id. Außerdem wird 1.00 zu 1 und 1e3 zu 1000. Die letzten beiden Änderungen erhalten den Zahlenwert; bei der ID geht der ursprüngliche Ganzzahlwert verloren.
const source = '{"id":9007199254740993,"price":1.00,"scale":1e3}';
JSON.stringify(JSON.parse(source));
// {"id":9007199254740992,"price":1,"scale":1000}Die größte sichere Ganzzahl von JavaScript Number ist 9007199254740991. Nicht jede größere Ganzzahl wird gerundet, aber unterschiedliche Ganzzahlen können denselben Number-Wert ergeben. Unterscheiden Sie die JSON-Zahlensyntax von der Präzisionsgrenze des jeweiligen Parsers.
ECMAScript: Number.MAX_SAFE_INTEGER
Doppelte Schlüssel: gültige Syntax bedeutet nicht Interoperabilität
Kommt mode zweimal in einem Objekt vor, überschreibt JSON.parse den früheren Wert mit dem späteren. RFC 8259 empfiehlt eindeutige Namen und beschreibt abweichendes Verhalten bei Duplikaten. Gehen Sie nicht von identischem Verhalten aller Parser aus.
JSON.stringify(JSON.parse('{"mode":"first","mode":"last"}'));
// {"mode":"last"}Moyoutil entfernt doppelte Schlüssel nicht automatisch. Ihre Erhaltung ist keine Empfehlung, sie zu verwenden. Prüfen Sie Empfängersystem und Datenspezifikation; lösen Sie doppelte Namen bei der Erzeugung der Originaldaten auf.
Mit Moyoutil prüfen und die Originalschreibweise erhalten
formatJSON prüft die Syntax mit JSON.parse, erzeugt die Ausgabe jedoch aus den Originaltokens statt aus dem geparsten Objekt. Große Ganzzahlen, Dezimal- und Exponentenschreibweisen, doppelte Schlüssel und Schlüsselreihenfolge bleiben erhalten. Die Bytes können sich unterscheiden: Leerraum und Zeilenumbrüche ändern sich. Minimierung entfernt keine Leerzeichen innerhalb von Zeichenketten.
formatJSON('{"id":9007199254740993,"price":1.00,"scale":1e3}', 0).output
// {"id":9007199254740993,"price":1.00,"scale":1e3}Original aufbewahren, ins JSON-Werkzeug einfügen und formatieren oder minimieren. Wichtige IDs und Zahlenschreibweisen vor dem Herunterladen vergleichen. Eingabeänderungen löschen das Ergebnis und deaktivieren Kopieren; erneut prüfen. Die Grenze beträgt 2MiB UTF-8 und 128 Verschachtelungsebenen.
Syntaxprüfung prüft weder Geschäftsregeln noch JSON Schema oder die Interpretation des Servers. Eine Zahl in eine Zeichenkette umzuwandeln ändert ihren Typ und ist keine automatische Lösung. Prüfen Sie, ob die Datenspezifikation Text-IDs erlaubt. Reproduzieren Sie Probleme mit erfundenen Daten statt echten geheimen Schlüsseln oder persönlichen Informationen.
Häufig gestellte Fragen
Bleiben Zahlen nach erfolgreicher Prüfung auch auf einem anderen Server erhalten?
Nein. Die Ausgabe behält die Schreibweise, aber ein Server, der sie als Zahlen parst, wendet die Präzisionsgrenzen seines Parsers an.
Erzeugt JSON-Minimierung eine ZIP-Datei?
Nein. Sie erzeugt JSON-Text ohne unnötigen syntaktischen Leerraum und Zeilenumbrüche. Eine ZIP-Datei entsteht nicht.