Kann ich Kommentare innerhalb einer JSON-Datei verwenden? Wenn ja, wie?
Antworten
Zu viele Anzeigen?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.
Wenn Sie JSON5 können Sie Kommentare einfügen.
JSON5 ist eine vorgeschlagene Erweiterung von JSON das den Menschen das Schreiben und die Pflege von Hand erleichtern soll. Zu diesem Zweck werden einige minimale Syntaxfunktionen direkt aus ECMAScript 5 übernommen.
Das Dojo Toolkit JavaScript Toolkit (zumindest ab Version 1.4) ermöglicht es Ihnen, Kommentare in Ihr JSON einzufügen. Die Kommentare können sein /* */
Format. Dojo Toolkit konsumiert das JSON über die dojo.xhrGet()
anrufen.
Andere JavaScript-Toolkits können ähnlich funktionieren.
Dies kann hilfreich sein, wenn man mit alternativen Datenstrukturen (oder sogar Datenlisten) experimentiert, bevor man sich für eine endgültige Option entscheidet.
Haftungsausschluss: Das ist albern
Es gibt tatsächlich eine Möglichkeit, Kommentare hinzuzufügen und dabei innerhalb der Spezifikation zu bleiben (kein zusätzlicher Parser erforderlich). Ohne eine Art von Parsing werden jedoch keine für Menschen lesbaren Kommentare erzeugt.
Sie könnten Folgendes missbrauchen:
Unwesentliche Leerzeichen sind vor oder nach jedem Token erlaubt. Ein Leerzeichen ist eine beliebige Folge von einem oder mehreren der folgenden Code Codepunkten: Tabulatorzeichen (U+0009), Zeilenvorschub (U+000A), Wagenrücklauf Return (U+000D), und Leerzeichen (U+0020).
Auf eine etwas umständliche Art und Weise können Sie dies missbrauchen, um einen Kommentar hinzuzufügen. Zum Beispiel: Beginnen und beenden Sie Ihren Kommentar mit einem Tabulator. Kodieren Sie den Kommentar in base3 und verwenden Sie die anderen Leerzeichen, um sie darzustellen. Zum Beispiel.
010212 010202 011000 011000 011010 001012 010122 010121 011021 010202 001012 011022 010212 011020 010202 010202
( hello base three
in ASCII), aber anstelle von 0 ein Leerzeichen, für 1 einen Zeilenvorschub und für 2 einen Wagenrücklauf.
Dies führt nur zu einer Menge unlesbarer Leerzeichen (es sei denn, Sie erstellen ein IDE-Plugin, das diese während des Betriebs kodiert/dekodiert).
Ich habe das aus offensichtlichen Gründen nie ausprobiert, und das sollten Sie auch nicht.
Sie peut haben Kommentare in JSONP aber nicht in reinem JSON. Ich habe gerade eine Stunde damit verbracht, mein Programm mit diesem Beispiel von Highcharts zum Laufen zu bringen: http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?
Wenn Sie dem Link folgen, werden Sie sehen
?(/* AAPL historical OHLC data from the Google Finance API */
[
/* May 2006 */
[1147651200000,67.79],
[1147737600000,64.98],
...
[1368057600000,456.77],
[1368144000000,452.97]
]);
Da ich eine ähnliche Datei in meinem lokalen Ordner hatte, gab es keine Probleme mit dem Politik der gleichen Herkunft Deshalb habe ich beschlossen, reines JSON zu verwenden... und natürlich, $.getJSON
aufgrund der Kommentare stillschweigend scheiterte.
Schließlich schickte ich eine manuelle HTTP-Anfrage an die obige Adresse und stellte fest, dass der Inhaltstyp text/javascript
da JSONP reines JavaScript zurückgibt. In diesem Fall Kommentare sind erlaubt . Aber meine Anwendung gab den Inhaltstyp application/json
Deshalb musste ich die Kommentare entfernen.