Procesamiento de JSON en C++: bibliotecas, análisis y serialización de datos

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

Procesamiento de JSON en C++: bibliotecas, análisis y ejemplos



JSON (JavaScript Object Notation) es uno de los formatos de intercambio de datos más populares. Aunque C++ no tiene soporte integrado para JSON, existen varias bibliotecas potentes que permiten analizar, generar y modificar datos JSON fácilmente. En este artículo, veremos tres bibliotecas principales: nlohmann/json, RapidJSON y Boost.PropertyTree, y proporcionaremos ejemplos prácticos de su uso.



¿Por qué necesitas una biblioteca para JSON en C++?

C++ es un lenguaje compilado orientado al rendimiento. Analizar JSON manualmente con expresiones regulares u operaciones de cadenas es una tarea tediosa y propensa a errores. Las bibliotecas especializadas ofrecen:

  • Alta velocidad de análisis y serialización.
  • API intuitiva (a menudo al estilo de STL).
  • Soporte para estándares JSON (incluyendo objetos anidados, arreglos, null, Unicode).
  • Mínima cantidad de dependencias (a menudo header-only).


1. Biblioteca nlohmann/json (JSON for Modern C++)

La biblioteca más popular y fácil de usar. Se distribuye como header-only (un solo archivo de encabezado). Ideal para proyectos educativos y aplicaciones pequeñas.



Instalación

Descargue el archivo json.hpp del repositorio nlohmann/json e inclúyalo:

#include "json.hpp"using json = nlohmann::json;


Ejemplo: análisis de JSON desde una cadena

#include <iostream>#include "json.hpp"

int main() { std::string json_str = R"({ "name": "PythonLib", "year": 2025, "tags": ["C++", "JSON", "education"], "active": true })";

json data = json::parse(json_str);

std::cout << "Name: " << data["name"] << ""; std::cout << "Year: " << data["year"] << ""; std::cout << "First tag: " << data["tags"][0] << ""; std::cout << "Active: " << data["active"] << "";

return 0;}


Ejemplo: creación y serialización de JSON

#include <iostream>#include "json.hpp"

int main() { json obj; obj["title"] = "JSON in C++"; obj["pages"] = 42; obj["chapters"] = {"intro", "basics", "advanced"}; obj["metadata"]["author"] = "PythonLib Team";

std::string serialized = obj.dump(4); // 4 — sangría para una salida bonita std::cout << serialized << "";

return 0;}


2. Biblioteca RapidJSON

RapidJSON es una biblioteca de alto rendimiento, orientada a la velocidad y al mínimo consumo de memoria. Se utiliza a menudo en juegos, aplicaciones de servidor y sistemas embebidos. Soporta el estilo SAX (análisis por flujo) y el estilo DOM.



Instalación

Descargue el archivo desde GitHub e incluya los archivos de encabezado:

#include "rapidjson/document.h"#include "rapidjson/writer.h"#include "rapidjson/stringbuffer.h"


Ejemplo: análisis y lectura

#include <iostream>#include "rapidjson/document.h"

int main() { const char* json = "{\\"project\\":\\"PythonLib\\",\\"version\\":2.0}"; rapidjson::Document doc; doc.Parse(json);

if (doc.HasParseError()) { std::cerr << "Parse error!"; return 1; }

std::cout << "Project: " << doc["project"].GetString() << ""; std::cout << "Version: " << doc["version"].GetDouble() << "";

return 0;}


Ejemplo: generación de JSON

#include <iostream>#include "rapidjson/docume                    

Recommendations