Kann ich Kommentare innerhalb einer JSON-Datei verwenden? Wenn ja, wie?
Antworten
Zu viele Anzeigen?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.
});
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 */
}
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.
}
}
}
}
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!
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"
}