9370 Stimmen

Können Kommentare in JSON verwendet werden?

Kann ich Kommentare innerhalb einer JSON-Datei verwenden? Wenn ja, wie?

44voto

Neil Albrock Punkte 985

Die Idee hinter JSON ist es, einen einfachen Datenaustausch zwischen Anwendungen zu ermöglichen. Diese sind in der Regel webbasiert und die Sprache ist JavaScript.

Kommentare als solche sind nicht wirklich möglich, aber die Übergabe eines Kommentars als eines der Name/Wert-Paare in den Daten würde sicherlich funktionieren, obwohl diese Daten natürlich ignoriert oder vom Parsing-Code speziell behandelt werden müssten.

Das heißt, es ist nicht beabsichtigt, dass die JSON-Datei Kommentare im herkömmlichen Sinne enthalten soll. Es sollten nur die Daten sein.

Werfen Sie einen Blick auf die JSON-Website für weitere Einzelheiten.

43voto

gaborous Punkte 14077

JSON unterstützt von Haus aus keine Kommentare, aber Sie können Ihren eigenen Decoder oder zumindest einen Präprozessor entwickeln, um Kommentare zu entfernen. Das ist völlig in Ordnung (solange Sie Kommentare einfach ignorieren und sie nicht dazu verwenden, um zu bestimmen, wie Ihre Anwendung die JSON-Daten verarbeiten soll).

JSON hat keine Kommentare. Ein JSON-Kodierer MUSS KEINE Kommentare ausgeben. Ein JSON-Decoder KANN Kommentare akzeptieren und ignorieren.

Kommentare sollten niemals dazu verwendet werden, etwas Sinnvolles zu übermitteln. Das ist dafür ist JSON gedacht.

Vgl: Douglas Crockford, Autor der JSON-Spezifikation .

38voto

Audrius Meškauskas Punkte 19811

Ja die neue Norm, JSON5 erlaubt die Kommentare im C++-Stil, neben vielen anderen andere Erweiterungen :

// A single line comment.

/* A multi-
   line comment. */

Das JSON5 Data Interchange Format (JSON5) ist eine Obermenge von JSON, die darauf abzielt, einige der Einschränkungen von JSON zu beseitigen. Es ist vollständig abwärtskompatibel, und seine Verwendung ist wahrscheinlich besser als das Schreiben eines benutzerdefinierten Nicht-Standard-Parsers, das Einschalten von Nicht-Standard-Funktionen für den vorhandenen Parser oder die Verwendung verschiedener Hacks wie String-Felder für die Kommentierung. Oder, wenn der verwendete Parser unterstützt, einfach zustimmen wir verwenden JSON 5 Untermenge, die JSON und C++-Stil Kommentare ist . Es ist viel besser als Wir optimieren den JSON-Standard so, wie wir es für richtig halten. .

Es gibt bereits npm-Paket , Python-Paket , Java-Paket et C-Bibliothek verfügbar. Sie ist rückwärtskompatibel. Ich sehe keinen Grund, bei den "offiziellen" JSON-Beschränkungen zu bleiben.

Ich denke, dass die Entfernung von Kommentaren aus JSON aus denselben Gründen erfolgt ist wie die Entfernung der Operatorüberladung in Java: Sie kann falsch verwendet werden, wobei einige eindeutig legitime Anwendungsfälle übersehen wurden. Bei der Überladung von Operatoren handelt es sich um Matrixalgebra und komplexe Zahlen. Bei JSON-Kommentaren handelt es sich um Konfigurationsdateien und andere Dokumente, die von Menschen geschrieben, bearbeitet oder gelesen werden können und nicht nur von Parsern.

37voto

Basel Shishani Punkte 7095

JSON ist für Konfigurationsdateien und andere lokale Verwendungszwecke sehr sinnvoll, da es allgegenwärtig ist und viel einfacher ist als XML.

Wenn die Leute starke Gründe gegen Kommentare in JSON haben, wenn sie Daten übermitteln (ob gültig oder nicht), dann könnte JSON möglicherweise in zwei Teile aufgeteilt werden:

  • JSON-COM: JSON auf dem Draht, oder Regeln, die bei der Kommunikation von JSON-Daten gelten.
  • JSON-DOC: JSON-Dokument, oder JSON in Dateien oder lokal. Regeln, die ein gültiges JSON-Dokument definieren.

JSON-DOC lässt Kommentare zu, und es können weitere geringfügige Unterschiede bestehen, z. B. bei der Behandlung von Leerzeichen. Parser können leicht von einer Spezifikation in die andere konvertieren.

In Bezug auf die Bemerkung erstellt von Douglas Crockford zu diesem Thema (mit Verweis auf @Artur Czajka)

Angenommen, Sie verwenden JSON, um Konfigurationsdateien zu speichern, die Sie mit Anmerkungen versehen möchten. Fügen Sie einfach alle Kommentare ein, die Sie möchten. Dann leiten Sie sie durch JSMin, bevor Sie sie an Ihren JSON-Parser weitergeben.

Wir sprechen über ein allgemeines Problem mit der Konfigurationsdatei (sprach- und plattformübergreifend), und er antwortet mit einem JS-spezifischen Dienstprogramm!

Natürlich kann ein JSON-spezifisches Minify in jeder Sprache implementiert werden, aber standardisieren Sie dies, so dass es in allen Parsern in allen Sprachen und Plattformen allgegenwärtig wird, damit die Leute ihre Zeit nicht mehr damit verschwenden, dass ihnen das Feature fehlt, weil sie gute Anwendungsfälle dafür haben, das Thema in Online-Foren suchen und Leute ihnen sagen, dass es eine schlechte Idee ist oder vorschlagen, dass es einfach ist, das Entfernen von Kommentaren aus Textdateien zu implementieren.

Das andere Problem ist die Interoperabilität. Angenommen, Sie haben eine Bibliothek, eine API oder ein beliebiges Subsystem, dem einige Konfigurations- oder Datendateien zugeordnet sind. Und dieses Subsystem soll von verschiedenen Sprachen aus zugegriffen werden soll. Sagt man dann den Leuten: Übrigens Vergessen Sie nicht, die Kommentare aus den JSON-Dateien zu entfernen, bevor Sie sie an den Parser weitergeben!

37voto

peterk Punkte 4856

Ich stoße gerade auf dieses Problem bei Konfigurationsdateien. Ich möchte nicht XML (ausführlich, grafisch, hässlich, schwer zu lesen), oder "ini"-Format (keine Hierarchie, kein echter Standard usw.) oder Java-"Eigenschaften"-Format (wie .ini).

JSON kann alles, was sie können, aber es ist viel weniger langatmig und besser lesbar - und Parser sind einfach und in vielen Sprachen allgegenwärtig. Es ist einfach ein Baum von Daten. Aber Out-of-Band-Kommentare sind oft eine Notwendigkeit, um "Standard"-Konfigurationen und Ähnliches zu dokumentieren. Konfigurationen sollten niemals "vollständige Dokumente" sein, sondern Bäume gespeicherter Daten, die bei Bedarf von Menschen gelesen werden können.

Ich denke, man könnte die "#": "comment" für "gültiges" JSON.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X