Kann ich Kommentare innerhalb einer JSON-Datei verwenden? Wenn ja, wie?
Antworten
Zu viele Anzeigen?Wenn Ihr Kontext die Node.js-Konfiguration ist, können Sie JavaScript über module.exports
als Alternative zu JSON:
module.exports = {
"key": "value",
// And with comments!
"key2": "value2"
};
Le site require
Die Syntax bleibt die gleiche. Da es sich um JavaScript handelt, sollte die Dateierweiterung lauten .js
.
Wie bereits in vielen Antworten erwähnt, verfügt JSON von Haus aus nicht über Kommentare. Natürlich möchte man sie manchmal trotzdem haben. Für Python zwei Möglichkeiten, dies zu tun, sind commentjson
( #
et //
nur für Python 2) oder json_tricks
( #
ou //
für Python 2 und Python 3), das noch einige andere Funktionen hat. Haftungsausschluss: Ich habe json_tricks
.
JSON unterstützt zwar keine Kommentare, JSONC tut.
Benennen Sie Ihre Datei mit der Erweiterung ".jsonc" und verwenden Sie eine jsonc Parser.
Entschuldigung, wenn diese Antwort zu spät kam.
jsonWithComments.jsonc
Exemple :
{
// This is a comment!
"something": "idk"
}
Wenn dies unklar ist, denke ich, dass der Bot komisch ist. Bitte versuchen Sie es, bevor Sie diese Frage als nicht hilfreich bewerten.
Sie können eine einfache Vorverarbeitung über reguläre Ausdrücke verwenden. Die folgende Funktion dekodiert zum Beispiel kommentiertes JSON in PHP:
function json_decode_commented ($data, $objectsAsArrays = false, $maxDepth = 512, $opts = 0) {
$data = preg_replace('~
(" (?:[^"\\\\] | \\\\\\\\ | \\\\")*+ ") | \# [^\v]*+ | // [^\v]*+ | /\* .*? \*/
~xs', '$1', $data);
return json_decode($data, $objectsAsArrays, $maxDepth, $opts);
}
Es unterstützt alle Kommentare im PHP-Stil: /*, #, //. String-Literale werden unverändert beibehalten.
*.json-Dateien werden in der Regel als Konfigurationsdateien oder statische Daten verwendet, daher die Notwendigkeit von Kommentaren einige Editoren wie NetBeans akzeptieren Kommentare in *.json.
Das Problem ist das Parsen von Inhalten in ein Objekt. Die Lösung besteht darin, immer eine Reinigungsfunktion (Server oder Client) anzuwenden.
PHP
$rgx_arr = ["/\/\/[^\n]*/sim", "/\/\*.*?\*\//sim", "/[\n\r\t]/sim"];
$valid_json_str = \preg_replace($rgx_arr, '', file_get_contents(path . 'a_file.json'));
JavaScript
valid_json_str = json_str.replace(/\/\/[^\n]*/gim,'').replace(/\/\*.*?\*\//gim,'')