Procesamiento de JSON en C++: biblioteca nlohmann/json para trabajar con 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++ con la biblioteca nlohmann/json



En el desarrollo moderno con C++, trabajar con JSON (JavaScript Object Notation) se ha convertido en una parte esencial al crear servicios web, archivos de configuración e intercambiar datos entre sistemas. Una de las bibliotecas más populares y convenientes para esta tarea es nlohmann/json (o simplemente JSON for Modern C++). Ofrece una API intuitiva, sintaxis minimalista y alto rendimiento. En este artículo, analizaremos en detalle cómo usar esta biblioteca para analizar, crear, modificar y serializar datos JSON en C++.



Instalación y configuración

La biblioteca nlohmann/json es header-only (consiste solo en archivos de encabezado). Para instalarla, basta con descargar el archivo json.hpp desde el repositorio oficial e incluirlo en el proyecto:



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


Si usas CMake, puedes incluir la biblioteca mediante FetchContent o vcpkg. Ejemplo para CMake:



FetchContent_Declare(json    GIT_REPOSITORY https://github.com/nlohmann/json.git    GIT_TAG v3.11.2)FetchContent_MakeAvailable(json)

target_link_libraries(your_project PRIVATE nlohmann_json::nlohmann_json)


Funcionalidades principales de la biblioteca

  • Analizar JSON desde una cadena o archivo – convertir texto en datos estructurados.
  • Crear objetos JSON – formar estructuras dinámicamente usando los operadores [] y métodos.
  • Acceso a datos – leer valores por claves e índices con verificación de tipos.
  • Serialización – convertir un objeto JSON de vuelta a una cadena con formato.
  • Trabajar con arreglos y objetos anidados – soporte para estructuras jerárquicas complejas.
  • Manejo de errores – excepciones ante datos o tipos incorrectos.


Ejemplo 1: Análisis y lectura de datos

Analicemos un ejemplo simple: tenemos una cadena con JSON que contiene información sobre un usuario. La analizamos y extraemos los valores:



#include <iostream>#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main() { std::string json_str = R"( { "name": "Иван", "age": 30, "is_student": false, "hobbies": ["чтение", "программирование", "спорт"] } )";

// Analizar la cadena en un objeto json json user = json::parse(json_str);

// Acceso a datos con verificación de tipo std::string name = user["name"]; int age = user["age"]; bool is_student = user["is_student"];

std::cout << "Имя: " << name << std::endl; std::cout << "Возраст: " << age << std::endl; std::cout << "Студент: " << (is_student ? "да" : "нет") << std::endl;

// Trabajar con arreglos auto& hobbies = user["hobbies"]; std::cout << "Хобби: "; for (const auto& hobby : hobbies) { std::cout << hobby << " "; } std::cout << std::endl;

return 0;}


Ejemplo 2: Creación y serialización de JSON

A menudo es necesario formar una estructura JSON mediante programación. El siguiente código crea un objeto con datos de un libro y lo muestra en formato legible:



#include <iostream>#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main() { // Crear un objeto vacío json book;

// Rellenar datos book["title"] = "Война и мир"; book["author"] = "Лев Толстой"; book["year"] = 1869; book["genres"] = {"роман", "историческая литература"};

// Objeto anidado book["publisher"]["name"] = "Эксмо";

Recommendations