Kann ich Kommentare innerhalb einer JSON-Datei verwenden? Wenn ja, wie?
Antworten
Zu viele Anzeigen?Json specs unterstützt keine Kommentare, ABER Sie können das Problem umgehen, indem Sie Ihren Kommentar als Schlüssel schreiben, etwa so
{
"// my own comment goes here":"",
"key1":"value 1",
"// another comment goes here":"",
"key 2": "value 2 here"
}
Auf diese Weise verwenden wir die Kommentartexte als Schlüssel und stellen (fast) sicher, dass sie eindeutig sind und keine Parser brechen. Wenn einige Ihrer Kommentare nicht eindeutig sind, fügen Sie einfach zufällige Zahlen am Ende hinzu.
Wenn Sie Kommentare analysieren müssen, um sie z. B. zu entfernen, können Sie die Kommentarwerte mit Text füllen, der angibt, dass es sich um einen Kommentar handelt, etwa so:
{
"// my own comment goes here" : "_comment",
"key1":"value 1",
"// another comment goes here" : "_comment",
"key 2": "value 2 here"
}
Auf diese Weise kann ein Parser alle Kommentare finden und sie verarbeiten.
Ich bin in meinem aktuellen Projekt auf dieses Problem gestoßen, da ich ziemlich viel JSON habe, das eine gewisse Kommentierung erfordert, damit die Dinge leicht zu merken sind.
Ich habe diese einfache Python-Funktion verwendet, um Kommentare zu ersetzen & zu verwenden json.loads
um sie in eine dict
:
import json, re
def parse_json(data_string):
result = []
for line in data_string.split("\n"):
line = line.strip()
if len(line) < 1 or line[0:2] == "//":
continue
if line[-1] not in "\,\"\'":
line = re.sub("\/\/.*?$", "", line)
result.append(line)
return json.loads("\n".join(result))
print(parse_json("""
{
// This is a comment
"name": "value" // so is this
// "name": "value"
// the above line gets removed
}
"""))
Ja, Sie können Kommentare in eine JSON-Datei einfügen.
{
"": "Location to post to",
"postUrl": "https://example.com/upload/",
"": "Username for basic auth",
"username": "joebloggs",
"": "Password for basic auth (note this is in clear, be sure to use HTTPS!",
"password": "bloejoggs"
}
Ein Kommentar ist einfach ein Stück Text, das den Zweck eines Code- oder Konfigurationsblocks beschreibt. Und da Sie Schlüssel in JSON mehrfach angeben können, können Sie das so machen. Es ist syntaktisch korrekt und der einzige Nachteil ist, dass Sie einen leeren Schlüssel mit einem Müllwert in Ihrem Wörterbuch haben werden (den Sie kürzen könnten...)
Ich habe diese Frage schon vor Jahren gesehen, aber ich habe sie erst jetzt in einem Projekt gesehen, an dem ich arbeite, und ich dachte mir, dass dies eine wirklich saubere Methode ist, es zu tun. Viel Spaß!
Es gibt andere Bibliotheken, die JSON-kompatibel sind und Kommentare unterstützen.
Ein bemerkenswertes Beispiel ist die "Hashcorp Language" (HCL)" . Es wurde von denselben Leuten geschrieben, die Vagrant, Packer, Consul und Vault entwickelt haben.
Ich mag den Ansatz von @eli sehr, es gibt über 30 Antworten, aber niemand hat Listen (Array) erwähnt. Mit dem Ansatz von @eli könnten wir also etwas tun wie:
"part_of_speech": {
"__comment": [
"@param {String} type - the following types can be used: ",
"NOUN, VERB, ADVERB, ADJECTIVE, PRONOUN, PREPOSITION",
"CONJUNCTION, INTERJECTION, NUMERAL, PARTICLE, PHRASE",
"@param {String} type_free_form - is optional, can be empty string",
"@param {String} description - is optional, can be empty string",
"@param {String} source - is optional, can be empty string"
],
"type": "NOUN",
"type_free_form": "noun",
"description": "",
"source": "https://google.com",
"noun_class": {
"__comment": [
"@param {String} noun_class - the following types can be used: ",
"1_class, 2_class, 3_class, 4_class, 5_class, 6_class"
],
"noun_class": "4_class"
}
}