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 También en la biblioteca
Cliente Elasticsearch para Node.js: @elastic/elasticsearch
Biblioteca estándar de Kotlin: revisión completa y ejemplos
GraphQL para C# (.NET): Guía completa de la biblioteca GraphQL.NET
Trabajo con imágenes en C++: bibliotecas CImg y STB Image
GraphQL en C++: biblioteca cppgraphqlgen para API modernas