Introdução
Neste projeto, você aprenderá como implementar um interpretador de comentários JSON. Esta é uma funcionalidade útil ao trabalhar com arquivos de configuração JSON, pois permite adicionar comentários para explicar o raciocínio por trás de certas configurações.
👀 Pré-visualização
$ /usr/local/go/bin/go test
PASS
ok jsonex 0.002s
🎯 Tarefas
Neste projeto, você aprenderá:
- Como inicializar um módulo Go e configurar o ambiente necessário
- Como implementar uma função de parsing de comentários JSON que suporte o caractere
#como comentário - Como lidar com casos em que o caractere
"faz parte do conteúdo da string - Como testar a função de parsing de comentários JSON
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Entender como trabalhar com módulos Go e configurar um ambiente de desenvolvimento
- Implementar um parser JSON personalizado que suporte comentários
- Escrever testes para garantir a correção da sua função de parsing de comentários JSON
- Aplicar seu novo conhecimento para aprimorar seus arquivos de configuração baseados em JSON com comentários informativos
Inicializar o Projeto
Nesta etapa, você aprenderá como inicializar o projeto e configurar o ambiente necessário. Siga os passos abaixo para completar esta etapa:
Abra um terminal e navegue até o diretório
/home/labex/project.Inicialize o módulo Go usando o seguinte comando:
/usr/local/go/bin/go mod init jsonexInstale os pacotes necessários executando o seguinte comando:
/usr/local/go/bin/go get github.com/stretchr/testify/assert
Implementar a Função de Parsing de Comentários JSON
Nesta etapa, você aprenderá como implementar a função de parsing de comentários JSON. Siga os passos abaixo para completar esta etapa:
Abra o arquivo
jsonex.gono editor.A função
Unmarshalestá parseando dados codificados em JSON e armazenando o resultado.- Suporte
#como o caractere de comentário em JSON, e tudo após o caractere deve ser considerado como um comentário. - Quando
"faz parte do conteúdo da string, ele deve ser representado como\", e o\deve ser representado como\\.
- Suporte
Implemente a função
trimCommentsLinepara verificar se uma linha é um comentário ou não. Se não for um comentário, retorne a própria linha.O código completo para a função
trimCommentsLinedeve ser o seguinte:// trimCommentsLine check the line is comment or not, if not, return the line itself func trimCommentsLine(line []byte) []byte { var newLine []byte var i, quoteCount int lastIdx := len(line) - 1 for i = 0; i <= lastIdx; i++ { // if the char is '\' if line[i] == '\\' { // if the index is not the last index, check if the next char is '"' or '\', if so, append it if i != lastIdx && (line[i+1] == '\\' || line[i+1] == '"') { newLine = append(newLine, line[i], line[i+1]) i++ continue } } // if the char is '"', increase the quoteCount if line[i] == '"' { quoteCount++ } // if the char is '#' if line[i] == '#' { // if the quoteCount is even, break, because the '#' is not in the string, // is in the comment if quoteCount%2 == 0 { break } } newLine = append(newLine, line[i]) } return newLine }
Testar a Função de Parsing de Comentários JSON
Nesta etapa, você aprenderá como testar a função de parsing de comentários JSON. Siga os passos abaixo para completar esta etapa:
Abra um terminal e navegue até o diretório
/home/labex/project.Execute o seguinte comando para executar os testes:
cd /home/labex/project /usr/local/go/bin/go testSe os testes passarem, você verá a seguinte saída:
PASS ok jsonex 0.002sSe você encontrar um erro de tempo limite (timeout), execute os seguintes comandos no terminal e, em seguida, clique no botão de reinspeção para passar na verificação:
cd /home/labex/project /usr/local/go/bin/go test
Parabéns! Você implementou com sucesso a função de parsing de comentários JSON e a testou. Agora você pode usar esta função em seu projeto.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



