JSON5-Objekte in JSON umwandeln — Numio
Wandelt ein JavaScript-Objektliteral in striktes JSON mit 2 Leerzeichen Einrückung um. Schlüssel ohne Anführungszeichen, einfache Anführungszeichen, Kommentare, abschließende Kommas, Hexadezimalzahlen und Dezimalzahlen mit führendem Punkt werden akzeptiert und normalisiert.
Ein Konfigurations- oder Fixture-Objekt aus einer .js-Datei in eine JSON-Datei, einen API-Request-Body oder eine Postman-Collection übernehmen.
Akzeptiert JSON und JSON5, einschließlich Kommentaren, einfachen Anführungszeichen und abschließenden Kommas. Funktionen und JavaScript-Ausdrücke werden nicht ausgeführt.
JS Object
JSON
Wann sie hilft
- Ein Konfigurations- oder Fixture-Objekt aus einer .js-Datei in eine JSON-Datei, einen API-Request-Body oder eine Postman-Collection übernehmen.
- Ein aus den Browser-DevTools oder einer Dokumentation kopiertes Objekt so bereinigen, dass es ein strikter JSON-Parser akzeptiert.
Anwendung
- Füge das Objektliteral (nur die Daten, ohne Variablendeklaration und abschließendes Semikolon) in den linken Editor ein oder öffne über die Schaltfläche zum Laden einer Datei eine UTF-8-Datei.
- Das JSON erscheint rechts während der Eingabe; wird ein Fehler wie "invalid character" angezeigt, prüfe die gemeldete Zeile und Spalte.
- Prüfe die umgewandelten Werte (Hexadezimal wird zu Dezimal, Anführungszeichen werden zu doppelten Anführungszeichen) und kopiere das Ergebnis.
JavaScript-Objektliteral
{
// Mongoose-style field definition
title: {
type: 'String',
required: true,
},
year: { type: 'Number', max: 0x7E6 },
tags: ['draft', 'review',],
ratio: .75,
'content-type': "text/plain",
}JSON
{
"title": {
"type": "String",
"required": true
},
"year": {
"type": "Number",
"max": 2022
},
"tags": [
"draft",
"review"
],
"ratio": 0.75,
"content-type": "text/plain"
}Details und Einschränkungen
Die Eingabe wird im Browser mit dem JSON5-Parser geparst; der Code wird nie ausgeführt. Ausdrücke, Funktionen, new Date(), Template-Literale, undefined und Variablenreferenzen werden als ungültige Zeichen abgelehnt.
NaN und Infinity werden mit einem Fehler abgelehnt, da JSON sie nicht darstellen kann.
Kommentare und die ursprüngliche Formatierung der Schlüssel bleiben nicht erhalten; die Ausgabe verwendet immer doppelte Anführungszeichen und 2 Leerzeichen Einrückung.
Ganzzahlen über 2^53 verlieren an Genauigkeit (12345678901234567890 wird zu 12345678901234567000). Setze große IDs als Strings in Anführungszeichen.
FAQ
Kann ich const config = { ... }; einfügen?
Nein. Nur der Wert wird akzeptiert. Entferne die Deklaration und das abschließende Semikolon, sonst meldet der Parser an dieser Stelle ein ungültiges Zeichen.
Was passiert mit doppelten Schlüsseln?
Das letzte Vorkommen gewinnt. {a: 1, a: 2} wird ohne Warnung zu {"a": 2}; prüfe also Objekte, die von Hand zusammengeführt wurden.
Werden Arrays oder einzelne Werte auf oberster Ebene akzeptiert?
Ja. Jeder JSON5-Wert funktioniert, z. B. wird [1, 2,] zu einem JSON-Array mit zwei Elementen und 'hi' zu "hi".