9370 Stimmen

Können Kommentare in JSON verwendet werden?

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

2voto

EKanadily Punkte 3434

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.

1voto

LogicalBranch Punkte 4104

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
}
"""))

1voto

nevelis Punkte 738

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ß!

1voto

spuder Punkte 15739

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.

0voto

khashashin Punkte 970

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"
  }
}

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