Introducción: ¿Por qué es necesario JSON en C++?
\nJSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, ampliamente utilizado en aplicaciones web, archivos de configuración y API. A pesar de que JSON se originó en JavaScript, hoy en día se ha convertido en el estándar de facto para la transmisión de datos estructurados entre el servidor y el cliente en cualquier lenguaje de programación, incluido C++.
\nEn este artículo, analizaremos cómo trabajar con JSON en C++: analizar (leer) y serializar (crear) datos JSON. El material está dirigido a desarrolladores principiantes que ya están familiarizados con los fundamentos de C++ (variables, funciones, clases), pero que aún no han trabajado con JSON.
\nPara trabajar con JSON en C++, utilizaremos la popular biblioteca nlohmann/json (también conocida como JSON for Modern C++). Es fácil de instalar, intuitiva y excelente para el aprendizaje.
\n\nInstalación de la biblioteca nlohmann/json
\nAntes de escribir código, es necesario incluir la biblioteca. La forma más sencilla es usar la versión header-only (basta con un solo archivo de encabezado).
\n\nMétodo 1: Descargar el archivo json.hpp
\n- \n
- Vaya al repositorio de GitHub nlohmann/json. \n
- Descargue el archivo
json.hppde la última versión. \n - Colóquelo en la carpeta de su proyecto. \n
- Inclúyalo en el código:
#include "json.hpp"\n
Método 2: Usar un gestor de paquetes (vcpkg / Conan)
\nSi usa CMake, la forma más sencilla es instalar la biblioteca a través de vcpkg:
\nvcpkg install nlohmann-json\nO a través de Conan:
\nconan install nlohmann_json/3.11.2@\n\nDespués de la instalación, incluya la biblioteca en el código:
\n#include <nlohmann/json.hpp>\nusing json = nlohmann::json;\n\n¡Ahora está listo para trabajar!
\n\nAnálisis de JSON en C++: lectura de datos
\nEl análisis es el proceso de convertir una cadena JSON en un objeto con el que se pueda trabajar en el código. La biblioteca nlohmann/json lo hace extremadamente simple.
\n\nEjemplo 1: Análisis de una cadena JSON
\nSupongamos que tenemos una cadena JSON que contiene información sobre un usuario:
\n{\n "name": "Alexey",\n "age": 30,\n "is_student": false,\n "hobbies": ["lectura", "programación", "bicicleta"]\n}\n\nEl análisis se realiza en una sola línea:
\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main() {\n // Cadena JSON original\n std::string json_str = R"(\n {\n "name": "Alexey",\n "age": 30,\n "is_student": false,\n "hobbies": ["lectura", "programación", "bicicleta"]\n }\n )";\n\n // Análisis\n json data = json::parse(json_str);\n\n // Acceso a los datos\n std::string name = data["name"];\n int age = data["age"];\n bool is_student = data["is_student"];\n std::vector<std::string> hobbies = data["hobbies"];\n\n // Salida\n std::cout << "Nombre: " << name << std::endl;\n std::cout << "Edad: " << age << std::endl;\n std::cout << "¿Estudiante? " << (is_student ? "sí" : "no") << std::endl;\n std::cout << "Pasatiempos: ";\n for (const auto& hobby : hobbies) {\n std::cout << hobby << " ";\n }\n std::cout << std::endl;\n\n return 0;\n}\n\nResultado de la ejecución:
\nNombre: Alexey\nEdad: 30\n¿Estudiante? no\nPasatiempos: lectura programación bicicleta\n\nEjemplo 2: Manejo de objetos anidados
\nJSON a menudo contiene estructuras anidadas. Consideremos un ejemplo con una dirección:
\n{\n "user": {\n "name": "María",\n "address": {\n "city": "Moscú",\n "street": "Tverskaya"\n }\n }\n}\n\nAcceso a datos anidados:
\nBlogs
Book Recommendations
Leer también