In Vorbereitung der neuen Version vom BKampfBot suchte ich nach einer Lösung von Kommentaren in JSON. Bisher wird das in dem Programm so gehandhabt, dass alle Zeilen, die mit einer Raute (#) anfangen, als Kommentare gelten. So wäre folgender Code für das Programm valider JSON-Code:
{
"hallo":"world",
# ein Kommentar
"hallo2":"world"
}
Das Problem dabei ist, dass andere JSON-Werkzeuge diese Kommentare nicht kennen, da sie im Standard nicht definiert wurden. Auf der Suche im Netz, bin ich auf einen netten und ausführlichen Artikel über das Thema gestoßen. Dieser beschreibt auch das Problem und kommt zu dem Schluss, dass man Kommentare ins JSON schreiben soll und durch einen bestimmten Buchstaben (z.B. @) kennzeichnen kann. Der Parser nimmt diese beim deserialisieren nicht mit auf und spart somit Speicherplatz.
Ich werde diese Technik auch beim BKampfBot einsetzen und hoffe, dass ich die JSON-Bibliothek dafür umbauen kann.
Mal ne dumme Frage: wozu braucht man Kommentare _in_ JSON? Den Code, in dem ich JSON (de)serialisiere, klar. Aber direkt in der Nachricht? Wozu?
Da hast du vollkommen Recht. Eigentlich braucht man das nicht.
Aber in dem Bot wird es auch für die Konfiguration eingesetzt. Das heißt, ich mache möchte in der Dokumentation auch direkt etwas beschreiben können. Außerdem kann man dann ganz schnell ungenutzte „Elemente“ auskommentieren. Nach der neuen Variante würde das dann so gehen:
{
"@Benutzername" : "test",
"@Passwort" : "test",
"Verschleiern": true,
"Debug": true,
"Benutzername" : "BinWirklichToll",
"Passwort" : "asdfasdf",
"Host": "http://www.bundeskampf.com",
"@Benutzername" : "googleasdfasdf",
"@Passwort" : "asdfasdfasdf",
"@Benutzername" : "asdf1234",
"@Passwort" : "asdfjklp",
}
Wie du siehst, habe ich verschiedene Benutzer definiert und je nachdem, welchen ich gerade benutzen will, kommentiere ich den ein. Also fürs das Debuggen von dem Bot.
Oder fällt dir dafür noch was besseres ein?