Trabajo con JSON en C++: análisis y serialización para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué es necesario JSON en C++?

\n

JSON (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++.

\n

En 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.

\n

Para 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\n

Instalación de la biblioteca nlohmann/json

\n

Antes 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\n

Método 1: Descargar el archivo json.hpp

\n
    \n
  • Vaya al repositorio de GitHub nlohmann/json.
  • \n
  • Descargue el archivo json.hpp de la última versión.
  • \n
  • Colóquelo en la carpeta de su proyecto.
  • \n
  • Inclúyalo en el código: #include "json.hpp"
  • \n
\n\n

Método 2: Usar un gestor de paquetes (vcpkg / Conan)

\n

Si usa CMake, la forma más sencilla es instalar la biblioteca a través de vcpkg:

\n
vcpkg install nlohmann-json
\n

O a través de Conan:

\n
conan install nlohmann_json/3.11.2@
\n\n

Despué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\n

Análisis de JSON en C++: lectura de datos

\n

El 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\n

Ejemplo 1: Análisis de una cadena JSON

\n

Supongamos 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\n

El 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\n

Resultado de la ejecución:

\n
Nombre: Alexey\nEdad: 30\n¿Estudiante? no\nPasatiempos: lectura programación bicicleta
\n\n

Ejemplo 2: Manejo de objetos anidados

\n

JSON 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\n

Acceso a datos anidados:

\n


                
                

Blogs

Book Recommendations