Einführung
In diesem Projekt lernst du, wie du einen JSON-Kommentar-Interpreter implementierst. Dies ist eine nützliche Funktion, wenn du mit JSON-Konfigurationsdateien arbeitest, da es dir ermöglicht, Kommentare hinzuzufügen, um die Gründe hinter bestimmten Einstellungen zu erklären.
👀 Vorschau
$ /usr/local/go/bin/go test
PASS
ok jsonex 0.002s
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du ein Go-Modul initialisierst und die notwendige Umgebung einrichtest
- Wie du eine JSON-Kommentar-Analysefunktion implementierst, die das
#-Zeichen als Kommentar unterstützt - Wie du Fälle behandelst, in denen das
"-Zeichen Teil des Stringinhalts ist - Wie du die JSON-Kommentar-Analysefunktion testest
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Zu verstehen, wie du mit Go-Modulen arbeitest und eine Entwicklungsumgebung einrichtest
- Eine benutzerdefinierte JSON-Analysierfunktion zu implementieren, die Kommentare unterstützt
- Tests zu schreiben, um die Korrektheit deiner JSON-Kommentar-Analysefunktion sicherzustellen
- Dein neues Wissen anzuwenden, um deine JSON-basierten Konfigurationsdateien mit informativen Kommentaren zu verbessern
Projekt initialisieren
In diesem Schritt lernst du, wie du das Projekt initialisierst und die notwendige Umgebung einrichtest. Folge den Schritten unten, um diesen Schritt abzuschließen:
Öffne ein Terminal und navigiere zum Verzeichnis
/home/labex/project.Initialisiere das Go-Modul mit dem folgenden Befehl:
/usr/local/go/bin/go mod init jsonexInstalliere die erforderlichen Pakete, indem du folgenden Befehl ausführst:
/usr/local/go/bin/go get github.com/stretchr/testify/assert
JSON-Kommentar-Analysefunktion implementieren
In diesem Schritt lernst du, wie du die JSON-Kommentar-Analysefunktion implementierst. Folge den Schritten unten, um diesen Schritt abzuschließen:
Öffne die Datei
jsonex.goim Editor.Die
Unmarshal-Funktion analysiert JSON-kodierte Daten und speichert das Ergebnis.- Unterstütze
#als Kommentarzeichen in JSON, und alles nach diesem Zeichen sollte als Kommentar betrachtet werden. - Wenn
"Teil des Stringinhalts ist, sollte es als\"dargestellt werden, und das\sollte als\\dargestellt werden.
- Unterstütze
Implementiere die
trimCommentsLine-Funktion, um zu überprüfen, ob eine Zeile ein Kommentar ist oder nicht. Wenn es kein Kommentar ist, gib die Zeile selbst zurück.Der vollständige Code für die
trimCommentsLine-Funktionen sollte wie folgt aussehen:// trimCommentsLine überprüft, ob die Zeile ein Kommentar ist oder nicht. Wenn nicht, gibt sie die Zeile selbst zurück func trimCommentsLine(line []byte) []byte { var newLine []byte var i, quoteCount int lastIdx := len(line) - 1 for i = 0; i <= lastIdx; i++ { // Wenn das Zeichen '\' ist if line[i] == '\\' { // Wenn der Index nicht der letzte Index ist, überprüfe, ob das nächste Zeichen '"' oder '\' ist. Wenn ja, hänge es an if i!= lastIdx && (line[i+1] == '\\' || line[i+1] == '"') { newLine = append(newLine, line[i], line[i+1]) i++ continue } } // Wenn das Zeichen '"' ist, erhöhe die quoteCount if line[i] == '"' { quoteCount++ } // Wenn das Zeichen '#' ist if line[i] == '#' { // Wenn die quoteCount gerade ist, breche ab, weil das '#' nicht im String ist, // sondern im Kommentar if quoteCount%2 == 0 { break } } newLine = append(newLine, line[i]) } return newLine }
JSON-Kommentar-Analysefunktion testen
In diesem Schritt lernst du, wie du die JSON-Kommentar-Analysefunktion testest. Folge den Schritten unten, um diesen Schritt abzuschließen:
Öffne ein Terminal und navigiere zum Verzeichnis
/home/labex/project.Führe folgenden Befehl aus, um die Tests auszuführen:
cd /home/labex/project /usr/local/go/bin/go testWenn die Tests erfolgreich sind, siehst du die folgende Ausgabe:
PASS ok jsonex 0.002sWenn du einen Timeout-Fehler erhältst, führe in der Konsole die folgenden Befehle aus und klicke dann auf die Schaltfläche "erneut überprüfen", um die Prüfung zu bestehen:
cd /home/labex/project /usr/local/go/bin/go test
Herzlichen Glückwunsch! Du hast die JSON-Kommentar-Analysefunktion erfolgreich implementiert und getestet. Du kannst diese Funktion jetzt in deinem Projekt verwenden.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



