Implementar Interpretador de Comentários JSON

GolangBeginner
Pratique Agora

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:

  1. Abra um terminal e navegue até o diretório /home/labex/project.

  2. Inicialize o módulo Go usando o seguinte comando:

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

  1. Abra o arquivo jsonex.go no editor.

  2. A função Unmarshal está 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 \\.
  3. Implemente a função trimCommentsLine para verificar se uma linha é um comentário ou não. Se não for um comentário, retorne a própria linha.

  4. O código completo para a função trimCommentsLine deve 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:

  1. Abra um terminal e navegue até o diretório /home/labex/project.

  2. Execute o seguinte comando para executar os testes:

    cd /home/labex/project
    /usr/local/go/bin/go test
    
  3. Se os testes passarem, você verá a seguinte saída:

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

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar