9370 Stimmen

Können Kommentare in JSON verwendet werden?

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

4voto

jlettvin Punkte 1081

Natürlich können Sie JSON kommentieren. Um eine kommentierte JSON-Datei aus JavaScript zu lesen, können Sie die Kommentare vor dem Parsen entfernen (siehe den Code unten). Ich bin sicher, dass dieser Code verbessert werden kann, aber er ist für diejenigen, die reguläre Ausdrücke verwenden, leicht zu verstehen.

Ich verwende kommentierte JSON-Dateien, um Neuronenformen für meine synthetischen Reflexsysteme festzulegen. Ich verwende auch kommentiertes JSON, um Zwischenzustände für ein laufendes Neuronensystem zu speichern. Es ist sehr praktisch, Kommentare zu haben. Hören Sie nicht auf die Didaktiker, die Ihnen sagen, dass sie eine schlechte Idee sind.

fetch(filename).then(function(response) {
    return response.text();
}).then(function(commented) {
    return commented.
        replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, '$1').
        replace(/\r/,"\n").
        replace(/\n[\n]+/,"\n");
}).then(function(clean) {
    return JSON.parse(clean);
}).then(function(json) {
    // Do what you want with the JSON object.
});

4voto

xdeepakv Punkte 7409

Ja, Sie können Kommentare abgeben. Aber ich werde nicht empfehlen, aus welchem Grund auch immer oben erwähnt.

Ich habe einige Nachforschungen angestellt und festgestellt, dass alle JSON-Methoden die JSON.parse Methode. Also habe ich eine Lösung gefunden: Wir können überschreiben oder tun Affe Parcheando um JSON.parse.

Hinweis: nur auf Node.js getestet ;-)

var oldParse = JSON.parse;
JSON.parse = parse;
function parse(json){
    json = json.replace(/\/\*.+\*\//, function(comment){
        console.log("comment:", comment);
        return "";
    });
    return oldParse(json)
}

JSON-Datei:

{
  "test": 1
  /* Hello, babe */
}

4voto

MickyD Punkte 14112

Nun, zum Zeitpunkt der Erstellung dieses Artikels, appsettings.json unterstützt Kommentare.

z.B. ( Muster mit freundlicher Genehmigung von Microsoft)

{
  "Logging": {
    "LogLevel": { // All providers, LogLevel applies to all the enabled providers.
      "Default": "Error", // Default logging, Error and higher.
      "Microsoft": "Warning" // All Microsoft* categories, Warning and higher.
    },
    "Debug": { // Debug provider.
      "LogLevel": {
        "Default": "Information", // Overrides preceding LogLevel:Default setting.
        "Microsoft.Hosting": "Trace" // Debug:Microsoft.Hosting category.
      }
    },
    "EventSource": { // EventSource provider
      "LogLevel": {
        "Default": "Warning" // All categories of EventSource provider.
      }
    }
  }
}

3voto

Meru-kun Punkte 2762

Wenn Sie PHP verwenden, können Sie diese Funktion verwenden, um nach Kommentaren des // /* Typs zu suchen und diese aus dem JSON-String zu entfernen, bevor Sie ihn in ein Objekt/Array parsen:

function json_clean_decode($json, $assoc = true, $depth = 512, $options = 0) {
       // search and remove comments like /* */ and //
       $json = preg_replace("#(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|([\s\t]//.*)|(^//.*)#", '', $json);

       if(version_compare(phpversion(), '5.4.0', '>=')) {
           $json = json_decode($json, $assoc, $depth, $options);
       }
       elseif(version_compare(phpversion(), '5.3.0', '>=')) {
           $json = json_decode($json, $assoc, $depth);
       }
       else {
           $json = json_decode($json, $assoc);
       }

       return $json;
   }

Ich hoffe, das hilft!

2voto

MovGP0 Punkte 6480

Sie können verwenden JSON-LD und die schema.org-Kommentar Typ, um Kommentare richtig zu schreiben:

{
    "https://schema.org/comment": "this is a comment"
}

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