JSON-Kommentar-Interpreter implementieren

GolangBeginner
Jetzt üben

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:

  1. Öffne ein Terminal und navigiere zum Verzeichnis /home/labex/project.

  2. Initialisiere das Go-Modul mit dem folgenden Befehl:

    /usr/local/go/bin/go mod init jsonex
    
  3. Installiere 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:

  1. Öffne die Datei jsonex.go im Editor.

  2. 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.
  3. 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.

  4. 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:

  1. Öffne ein Terminal und navigiere zum Verzeichnis /home/labex/project.

  2. Führe folgenden Befehl aus, um die Tests auszuführen:

    cd /home/labex/project
    /usr/local/go/bin/go test
    
  3. Wenn die Tests erfolgreich sind, siehst du die folgende Ausgabe:

    PASS
    ok      jsonex  0.002s
    
  4. Wenn 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.

✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben