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++: resumen de bibliotecas y ejemplos prácticos



JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, ampliamente utilizado en aplicaciones web, API y archivos de configuración. En C++, el trabajo con JSON no está integrado en la biblioteca estándar, por lo que los desarrolladores utilizan bibliotecas de terceros. En este artículo, analizaremos las tres herramientas más populares: nlohmann/json, RapidJSON y Boost.JSON. Aprenderá cómo instalarlas, analizar JSON, crear sus propias estructuras y serializar datos. Todos los ejemplos están acompañados de código en C++.



1. Biblioteca nlohmann/json



nlohmann/json es la biblioteca más popular para trabajar con JSON en C++. Es conocida por su sintaxis simple e intuitiva, que recuerda a Python o JavaScript. La biblioteca es header-only (solo archivos de encabezado), lo que simplifica la integración: basta con copiar el archivo json.hpp en el proyecto.



Instalación

Descargue json.hpp desde GitHub e inclúyalo:

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


Análisis de una cadena JSON

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

int main() { std::string json_str = R"({ "name": "Alice", "age": 30, "is_student": false, "skills": ["C++", "Python", "JSON"] })";

json data = json::parse(json_str);

std::cout << "Name: " << data["name"] << std::endl; std::cout << "Age: " << data["age"] << std::endl; std::cout << "First skill: " << data["skills"][0] << std::endl;

return 0;}


Creación y serialización de JSON

json person;person["name"] = "Bob";person["age"] = 25;person["is_student"] = true;person["languages"].push_back("C");person["languages"].push_back("Java");

std::string serialized = person.dump(4); // 4 — sangría para una salida bonitastd::cout << serialized << std::endl;


2. Biblioteca RapidJSON



RapidJSON es una biblioteca de alto rendimiento, enfocada en la velocidad y el uso mínimo de memoria. También es header-only y admite el estilo de análisis SAX (en flujo) y el estilo DOM (construcción de árbol). Es adecuada para proyectos donde el rendimiento es importante, como en motores de juegos o servidores de alta carga.



Instalación

Descargue los archivos del repositorio RapidJSON e inclúyalos:

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


Análisis de JSON

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

int main() { const char* json = "{\\"name\\":\\"Charlie\\",\\"age\\":28,\\"active\\":true}"; rapidjson::Document doc; doc.Parse(json);

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

std::cout << "Name: " << doc["name"].GetString() << std::endl; std::cout << "Age: " << doc["age"].GetInt() << std::endl;

return 0;}


Creación de JSON y serialización

rapidjson::Document doc;doc.SetObject();rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();

doc.AddMember("name", "Diana", allocator);doc.AddMember("score", 95.5, allocator);

rapidjson::StringBuffer buffer;rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);doc.Accept(writer);

std::cout << buffer.GetString() << std::endl;


3. Biblioteca Boost.JSON



Boost.JSON — parte de las bibliotecas Boost, oficialmente aceptada en C++ Bo

Recommendations