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 al trabajo con JSON en C++

JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos ampliamente utilizado en desarrollo web, archivos de configuración y API. Aunque C++ no tiene soporte integrado para JSON, existen muchas bibliotecas que facilitan y simplifican el trabajo con este formato. En este artículo, veremos cómo analizar (procesar) y serializar (crear) datos JSON en C++ utilizando la popular biblioteca nlohmann/json. El material está dirigido a desarrolladores principiantes que ya conocen los fundamentos de C++.



1. Instalación y configuración de la biblioteca nlohmann/json

La biblioteca nlohmann/json es una de las más populares y fáciles de usar para trabajar con JSON en C++. Es compatible con C++11 y versiones posteriores, y funciona en todas las plataformas principales.

Métodos de instalación

  • Descargar el archivo de cabecera: vaya al repositorio de GitHub y descargue el archivo json.hpp.
  • Instalación mediante vcpkg: vcpkg install nlohmann-json
  • Instalación mediante Conan: conan install nlohmann_json/3.11.2@

Después de la instalación, simplemente incluya el archivo en su proyecto:

#include <iostream>#include "json.hpp"using json = nlohmann::json;

int main() { std::cout << "¡Biblioteca conectada!" << std::endl; return 0;}


2. Análisis de JSON: lectura de datos desde una cadena y un archivo

El análisis (procesamiento) de JSON es el proceso de convertir una cadena en formato JSON en estructuras de datos de C++. La biblioteca nlohmann/json lo hace de manera muy sencilla.



Análisis desde una cadena

Veamos un ejemplo de procesamiento de un objeto JSON simple:

#include <iostream>#include "json.hpp"using json = nlohmann::json;

int main() { std::string json_str = R"({ "name": "Ana", "age": 25, "is_student": false, "hobbies": ["lectura", "natación", "programación"] })";

// Análisis de la cadena json data = json::parse(json_str);

// Acceso a los datos std::string name = data["name"]; int age = data["age"]; bool is_student = data["is_student"]; std::vector<std::string> hobbies = data["hobbies"];

std::cout << "Nombre: " << name << std::endl; std::cout << "Edad: " << age << std::endl; std::cout << "Estudiante: " << (is_student ? "sí" : "no") << std::endl; std::cout << "Pasatiempos: "; for (const auto& hobby : hobbies) { std::cout << hobby << " "; } std::cout << std::endl;

return 0;}


Análisis desde un archivo

A menudo, los datos JSON se almacenan en archivos. Así es como se leen:

#include <iostream>#include <fstream>#include "json.hpp"using json = nlohmann::json;

int main() { std::ifstream file("data.json"); if (!file.is_open()) { std::cerr << "¡Error al abrir el archivo!" << std::endl; return 1; }

json data = json::parse(file); file.close();

// Salida de datos std::cout << "Datos del archivo: " << data.dump(4) << std::endl; return 0;}

El método dump(4) convierte el JSON de vuelta a una cadena con sangría de 4 espacios para facilitar la lectura.



3. Serialización: creación de JSON a partir de datos de C++

La serialización es el proceso inverso: convertir datos de C++ en una cadena JSON. La biblioteca permite crear objetos JSON de forma intuitiva.



Creación de un objeto JSON simple

#include <iostream>#include "json.hpp"using json = nlohmann::json;

int main() { json person;

person["name"] = "Iván";

Blogs

Book Recommendations