Introducción
En este proyecto, aprenderás a implementar un interprete de comentarios JSON. Esta es una característica útil cuando se trabaja con archivos de configuración JSON, ya que te permite agregar comentarios para explicar el razonamiento detrás de ciertas configuraciones.
👀 Vista previa
$ /usr/local/go/bin/go test
PASS
ok jsonex 0.002s
🎯 Tareas
En este proyecto, aprenderás:
- Cómo inicializar un módulo de Go y configurar el entorno necesario
- Cómo implementar una función de análisis de comentarios JSON que admita el carácter
#como comentario - Cómo manejar los casos en los que el carácter
"forma parte del contenido de la cadena - Cómo probar la función de análisis de comentarios JSON
🏆 Logros
Después de completar este proyecto, podrás:
- Comprender cómo trabajar con módulos de Go y configurar un entorno de desarrollo
- Implementar un analizador JSON personalizado que admita comentarios
- Escribir pruebas para garantizar la corrección de tu función de análisis de comentarios JSON
- Aplicar tus nuevos conocimientos para mejorar tus archivos de configuración basados en JSON con comentarios informativos
Inicializar el proyecto
En este paso, aprenderás a inicializar el proyecto y configurar el entorno necesario. Sigue los pasos siguientes para completar este paso:
Abre una terminal y navega hasta el directorio
/home/labex/project.Inicializa el módulo de Go usando el siguiente comando:
/usr/local/go/bin/go mod init jsonexInstala los paquetes necesarios ejecutando el siguiente comando:
/usr/local/go/bin/go get github.com/stretchr/testify/assert
Implementar la función de análisis de comentarios JSON
En este paso, aprenderás a implementar la función de análisis de comentarios JSON. Sigue los pasos siguientes para completar este paso:
Abre el archivo
jsonex.goen el editor.La función
Unmarshalestá analizando los datos codificados en JSON y almacenando el resultado.- Soporte el carácter
#como carácter de comentario en JSON, y todo lo que venga después de este carácter debe considerarse como un comentario. - Cuando
"forma parte del contenido de la cadena, debe representarse como\", y el\debe representarse como\\.
- Soporte el carácter
Implementa la función
trimCommentsLinepara comprobar si una línea es un comentario o no. Si no es un comentario, devuelve la línea misma.El código completo de la función
trimCommentsLinedebe ser el siguiente:// trimCommentsLine comprueba si la línea es un comentario o no, si no lo es, devuelve la línea misma func trimCommentsLine(line []byte) []byte { var newLine []byte var i, quoteCount int lastIdx := len(line) - 1 for i = 0; i <= lastIdx; i++ { // si el carácter es '\' if line[i] == '\\' { // si el índice no es el último índice, comprueba si el siguiente carácter es '"' o '\', si es así, añádelo if i!= lastIdx && (line[i+1] == '\\' || line[i+1] == '"') { newLine = append(newLine, line[i], line[i+1]) i++ continue } } // si el carácter es '"', incrementa el quoteCount if line[i] == '"' { quoteCount++ } // si el carácter es '#' if line[i] == '#' { // si el quoteCount es par, rompe, porque el '#' no está en la cadena, // está en el comentario if quoteCount%2 == 0 { break } } newLine = append(newLine, line[i]) } return newLine }
Probar la función de análisis de comentarios JSON
En este paso, aprenderás a probar la función de análisis de comentarios JSON. Sigue los pasos siguientes para completar este paso:
Abre una terminal y navega hasta el directorio
/home/labex/project.Ejecuta el siguiente comando para ejecutar las pruebas:
cd /home/labex/project /usr/local/go/bin/go testSi las pruebas pasan, verás la siguiente salida:
PASS ok jsonex 0.002sSi encuentras un error de tiempo de espera, ejecuta los siguientes comandos en la terminal y luego haz clic en el botón de reinspección para aprobar la comprobación:
cd /home/labex/project /usr/local/go/bin/go test
¡Felicitaciones! Has implementado con éxito la función de análisis de comentarios JSON y la has probado. Ahora puedes usar esta función en tu proyecto.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



