Implémenter l'interpréteur de commentaires JSON

GolangGolangBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à implémenter un interpréteur de commentaires JSON. Cette fonction est pratique lorsqu'on travaille avec des fichiers de configuration JSON, car elle vous permet d'ajouter des commentaires pour expliquer le raisonnement derrière certaines paramètres.

👀 Aperçu

$ /usr/local/go/bin/go test
PASS
ok      jsonex  0.002s

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment initialiser un module Go et configurer l'environnement nécessaire
  • Comment implémenter une fonction d'analyse de commentaires JSON qui prend en charge le caractère # comme commentaire
  • Comment gérer les cas où le caractère " est présent dans le contenu de la chaîne
  • Comment tester la fonction d'analyse de commentaires JSON

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Comprendre comment travailler avec les modules Go et configurer un environnement de développement
  • Implémenter un analyseur JSON personnalisé qui prend en charge les commentaires
  • Écrire des tests pour vous assurer de la correction de votre fonction d'analyse de commentaires JSON
  • Appliquer vos nouvelles connaissances pour enrichir vos fichiers de configuration JSON avec des commentaires informatifs

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/DataTypesandStructuresGroup(["Data Types and Structures"]) go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go(("Golang")) -.-> go/AdvancedTopicsGroup(["Advanced Topics"]) go(("Golang")) -.-> go/TestingandProfilingGroup(["Testing and Profiling"]) go(("Golang")) -.-> go/CommandLineandEnvironmentGroup(["Command Line and Environment"]) go/DataTypesandStructuresGroup -.-> go/strings("Strings") go/FunctionsandControlFlowGroup -.-> go/functions("Functions") go/AdvancedTopicsGroup -.-> go/json("JSON") go/TestingandProfilingGroup -.-> go/testing_and_benchmarking("Testing and Benchmarking") go/CommandLineandEnvironmentGroup -.-> go/command_line("Command Line") go/CommandLineandEnvironmentGroup -.-> go/environment_variables("Environment Variables") subgraph Lab Skills go/strings -.-> lab-301258{{"Implémenter l'interpréteur de commentaires JSON"}} go/functions -.-> lab-301258{{"Implémenter l'interpréteur de commentaires JSON"}} go/json -.-> lab-301258{{"Implémenter l'interpréteur de commentaires JSON"}} go/testing_and_benchmarking -.-> lab-301258{{"Implémenter l'interpréteur de commentaires JSON"}} go/command_line -.-> lab-301258{{"Implémenter l'interpréteur de commentaires JSON"}} go/environment_variables -.-> lab-301258{{"Implémenter l'interpréteur de commentaires JSON"}} end

Initialiser le projet

Dans cette étape, vous allez apprendre à initialiser le projet et à configurer l'environnement nécessaire. Suivez les étapes ci-dessous pour terminer cette étape :

  1. Ouvrez un terminal et accédez au répertoire /home/labex/project.

  2. Initialisez le module Go à l'aide de la commande suivante :

    $ /usr/local/go/bin/go mod init jsonex
  3. Installez les packages requis en exécutant la commande suivante :

    $ /usr/local/go/bin/go get github.com/stretchr/testify/assert

Implémenter la fonction d'analyse de commentaires JSON

Dans cette étape, vous allez apprendre à implémenter la fonction d'analyse de commentaires JSON. Suivez les étapes ci-dessous pour terminer cette étape :

  1. Ouvrez le fichier jsonex.go dans l'éditeur.

  2. La fonction Unmarshal est utilisée pour analyser les données encodées au format JSON et stocker le résultat.

    • Prendre en charge le caractère # comme caractère de commentaire dans le JSON, et tout ce qui se trouve après ce caractère doit être considéré comme un commentaire.
    • Lorsque le caractère " est présent dans le contenu de la chaîne, il doit être représenté comme \", et le caractère \ doit être représenté comme \\.
  3. Implémentez la fonction trimCommentsLine pour vérifier si une ligne est un commentaire ou non. Si ce n'est pas un commentaire, renvoyez la ligne elle-même.

  4. Le code complet de la fonction trimCommentsLine devrait être le suivant :

    // trimCommentsLine vérifie si la ligne est un commentaire ou non, si ce n'est pas le cas, renvoie la ligne elle-même
    func trimCommentsLine(line []byte) []byte {
    	var newLine []byte
    	var i, quoteCount int
    	lastIdx := len(line) - 1
    	for i = 0; i <= lastIdx; i++ {
    		// si le caractère est '\'
    		if line[i] == '\\' {
    			// si l'index n'est pas le dernier index, vérifiez si le caractère suivant est '"' ou '\', si c'est le cas, ajoutez-le
    			if i!= lastIdx && (line[i+1] == '\\' || line[i+1] == '"') {
    				newLine = append(newLine, line[i], line[i+1])
    				i++
    				continue
    			}
    		}
    
    		// si le caractère est '"', augmentez le compteur de guillemets
    		if line[i] == '"' {
    			quoteCount++
    		}
    
    		// si le caractère est '#'
    		if line[i] == '#' {
    			// si le compteur de guillemets est pair, arrêtez-vous, car le '#' n'est pas dans la chaîne,
    			// mais dans le commentaire
    			if quoteCount%2 == 0 {
    				break
    			}
    		}
    
    		newLine = append(newLine, line[i])
    	}
    
    	return newLine
    }

Tester la fonction d'analyse de commentaires JSON

Dans cette étape, vous allez apprendre à tester la fonction d'analyse de commentaires JSON. Suivez les étapes ci-dessous pour terminer cette étape :

  1. Ouvrez un terminal et accédez au répertoire /home/labex/project.

  2. Exécutez la commande suivante pour exécuter les tests :

    $ cd /home/labex/project
    $ /usr/local/go/bin/go test
  3. Si les tests réussissent, vous verrez la sortie suivante :

    PASS
    ok      jsonex  0.002s
  4. Si vous rencontrez une erreur de temps d'attente, exécutez les commandes suivantes dans le terminal puis cliquez sur le bouton de reinspection pour passer le contrôle :

    $ cd /home/labex/project
    $ /usr/local/go/bin/go test

Félicitations! Vous avez réussi à implémenter la fonction d'analyse de commentaires JSON et à la tester. Vous pouvez désormais utiliser cette fonction dans votre projet.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.