Bedenken Sie, dass wir eine Datei namens configuration.js
haben, und wenn wir nach innen schauen wir sehen:Wie erkennt man, dass eine JavaScript-Datei nur JSON-Daten enthält oder dass sie JSON-Daten enthalten soll?
'use strict';
var profile = {
"project": "%ProjectsRoot%\\SampleProject\\Site\\Site.csproj",
"projectsRootKey": "%ProjectsRoot%",
"ftp": {
"address": "ftp://192.168.40.50/",
"username": "",
"password": ""
},
"delete": [
"\\b(bin)\\b.*\\.config",
"\\b(bin)\\b.*\\.js",
"\\b(bin)\\b.*\\.css",
"bin\\\\(?!ProjectName).*\\.(dll|pdb)"
],
"replace": [
{
"file": "Web.config",
"items": [
{
"regex": "(<appSettings file=\")(bin\\\\)(Settings.config\">)",
"newValue": "$1$3"
},
{
"regex": "<remove\\s*segment=.bin.\\s/>",
"newValue": ""
}
]
}
]
};
In diesem Fall wird der Inhalt der .js
Datei JSON werden nur dazu gedacht, noch für einige IDE Gründen ist es angegeben als eine JavaScript-Anweisung, damit die IDE den Inhalt erkennt und korrekt formatiert. Diese Datei kann in einem anderen Szenario enthalten:
{
"project": "%ProjectsRoot%\\SampleProject\\Site\\Site.csproj",
"projectsRootKey": "%ProjectsRoot%",
"ftp": {
"address": "ftp://192.168.40.50/",
"username": "",
"password": ""
},
"delete": [
"\\b(bin)\\b.*\\.config",
"\\b(bin)\\b.*\\.js",
"\\b(bin)\\b.*\\.css",
"bin\\\\(?!ProjectName).*\\.(dll|pdb)"
],
"replace": [
{
"file": "Web.config",
"items": [
{
"regex": "(<appSettings file=\")(bin\\\\)(Settings.config\">)",
"newValue": "$1$3"
},
{
"regex": "<remove\\s*segment=.bin.\\s/>",
"newValue": ""
}
]
}
]
}
In beiden Fällen ist die Erweiterung von Dateien sind besser .json
zu sein, anstatt .js
zu sein. Wir erstellen ein Qualitätstool mit vielen Funktionen, von denen einer dem Entwickler vorschlägt, die Erweiterung der Datei basierend auf dem Inhalt zu ändern.
Wie können wir in beiden Fällen sicherstellen, dass die Datei nur JSON enthält oder nur JSON enthalten soll?
Hinweis: Der Grund für komplexe JSON ist hier als Beispiel, eine echte Stichprobe vorzuziehen.
das erste Schnipsel ist definitiv Javascript, nicht JSON –
Sie müssen nach Mustern im Inhalt der Datei suchen, Sie müssen definieren, was eine JSON-Datei gültig macht und suchen ... versuchen Sie nach: '{" '...' ":" '...' "}' ausgenommen Leerzeichen, Zeilenende ... –
Ihr erstes Beispiel enthält nur ein JS-Objekt (auch das zweite kann ein JS-Objekt sein, nur ohne direkte Zuweisung). Wenn Sie eine Datei zur Verwendung in JS hinzufügen, können Sie auf das zweite Beispiel in keiner Weise zugreifen. Und was meinst du mit "JSON"? – Justinas