9 Punkte von GN⁺ 2024-12-09 | 2 Kommentare | Auf WhatsApp teilen
  • JSON5 erweitert das JSON-Dateiformat, damit es für Menschen einfacher direkt zu schreiben und zu pflegen ist
    • Nicht für den Einsatz in der Kommunikation zwischen Maschinen gedacht
    • 2012 gestartet und mit Stand 2022 mehr als 65 Millionen Downloads pro Woche; gehört zu den obersten 0,1 % der am häufigsten abhängigen Pakete auf npm
    • Wird in wichtigen Projekten wie Chromium, Next.js, Babel, Retool und WebStorm eingesetzt
    • Wird auf Apple-Plattformen wie macOS und iOS standardmäßig unterstützt.
  • Merkmale von JSON5
    • Eine Obermenge von JSON, die Teile der Syntax von ECMAScript 5.1 enthält.
    • JSON5-Dateien sind immer gültige ES5-Dateien.
  • Erweiterte ECMAScript-5.1-Funktionen
    • Objekte
      • Objektschlüssel können IdentifierName aus ECMAScript 5.1 sein.
      • Ein einzelnes nachgestelltes Komma in Objekten ist erlaubt.
    • Arrays
      • Ein einzelnes nachgestelltes Komma in Arrays ist erlaubt.
    • Strings
      • Strings können in einfache Anführungszeichen gesetzt werden.
      • Durch Escaping von Zeilenumbrüchen können sie sich über mehrere Zeilen erstrecken.
      • Können Zeichen-Escapes enthalten.
    • Zahlen
      • Können in hexadezimaler Form dargestellt werden.
      • Können einen führenden oder nachgestellten Dezimalpunkt haben.
      • Können positive und negative Unendlichkeit sowie NaN gemäß IEEE 754 enthalten.
      • Können mit einem expliziten Pluszeichen beginnen.
    • Kommentare
      • Einzeilige und mehrzeilige Kommentare sind erlaubt.
    • Leerraum
      • Zusätzliche Leerraumzeichen sind erlaubt.
  • API
    • JSON5.parse(): Parst einen JSON5-String und erzeugt einen JavaScript-Wert oder ein Objekt.
    • JSON5.stringify(): Wandelt einen JavaScript-Wert in einen JSON5-String um.
  • CLI
    • Bietet eine CLI zum Konvertieren von JSON5 nach JSON oder zum Validieren der Syntax von JSON5-Dokumenten.
  • ECMAScript-Kompatibilität
    • JSON5 wurde für vollständige Kompatibilität mit ES5 entwickelt, jedoch sind die Zeichen U+2028 und U+2029 in ES5 nicht erlaubt.
    • Seit ES2019 sind diese Zeichen erlaubt, wodurch JSON und JSON5 vollständig mit ES2019 kompatibel sind.
  • Lizenz
    • Wird unter der MIT-Lizenz bereitgestellt.

2 Kommentare

 
GN⁺ 2024-12-09
Hacker-News-Kommentare
  • JSON unterstützt nur Zeichenfolgen in doppelten Anführungszeichen und hat damit den Vorteil, Debatten über die Verwendung von Anführungszeichen zu vermeiden. Mit JSONC lassen sich Kommentare und abschließende Kommata hinzufügen
    • JSONC wird in Visual Studio Code als Format für Einstellungen verwendet
  • Ich halte die Bezeichnung JSON5 für unethisch. Ohne Zustimmung des Urhebers zu suggerieren, es handle sich um die nächste Version, ist unangemessen
  • Ich bevorzuge JSON5 und finde, dass YAML schlecht lesbar ist. Um YAML-Dateien zu verstehen, nutze ich oft Werkzeuge zur Umwandlung in JSON
  • JSON ist gerade wegen seiner Einfachheit so weit verbreitet. Komplexe Alternativen wie XML oder YML halte ich nicht für geeignet
    • Die Verwendung komplexer Formate kann Probleme verursachen
  • Es ist schade, dass EDN außerhalb des Clojure-Ökosystems nicht stärker übernommen wurde
    • Es gibt zwar keinen Standard, aber die Nutzer kommen trotzdem gut damit zurecht
  • Es wird auf das Problem mit Sonderzeichen in JSON hingewiesen. JSON ist zwar als UTF-8 definiert, enthält aber einen Fehler bei der falschen Auflistung von 7-Bit-ASCII-Steuerzeichen
    • Im RFC müssten 33 Steuerzeichen enthalten sein
  • TOML wird empfohlen und als perfekte Kombination aus menschlicher Lesbarkeit und Tool-Unterstützung angesehen
  • Bei JSON-/YAML-Alternativen ist es aus dieser Sicht keine gute Idee, mehr Datentypen zu unterstützen
    • NestedText ist fast ideal, verwendet aber mehrere Syntaxen und nimmt Kommentare nicht in das Datenmodell auf
  • Es wird kritisiert, dass JSON5 keine \U-Escape-Sequenz für Unicode-Zeichen außerhalb der BMP eingeführt hat
    • Dass man UTF-16-Surrogatpaare verwenden muss, ist umständlich und entspricht nicht dem Unicode-Standard
  • In JSON werden außer Kommentaren und einem nativen Datetime-Typ keine weiteren Funktionen für nötig gehalten
    • Abschließende Kommata werden jedoch als nützlich angesehen