Processamento JSON em C++: biblioteca nlohmann/json para trabalhar com dados

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Processamento JSON em C++ com a biblioteca nlohmann/json



No desenvolvimento moderno em C++, o trabalho com JSON (JavaScript Object Notation) tornou-se uma parte essencial na criação de serviços web, arquivos de configuração e troca de dados entre sistemas. Uma das bibliotecas mais populares e convenientes para esta tarefa é a nlohmann/json (ou simplesmente JSON for Modern C++). Ela oferece uma API intuitiva, sintaxe minimalista e alto desempenho. Neste artigo, vamos detalhar como usar esta biblioteca para parsing, criação, modificação e serialização de dados JSON em C++.



Instalação e inclusão

A biblioteca nlohmann/json é header-only (consiste apenas em arquivos de cabeçalho). Para instalá-la, basta baixar o arquivo json.hpp do repositório oficial e incluí-lo no projeto:



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


Se você usa CMake, pode incluir a biblioteca através do FetchContent ou vcpkg. Exemplo 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)


Principais funcionalidades da biblioteca

  • Parsing de JSON a partir de string ou arquivo – conversão de texto em dados estruturados.
  • Criação de objetos JSON – formação dinâmica de estruturas usando operadores [] e métodos.
  • Acesso a dados – leitura de valores por chaves e índices com verificação de tipos.
  • Serialização – conversão do objeto JSON de volta para string com formatação.
  • Trabalho com arrays e objetos aninhados – suporte a estruturas hierárquicas complexas.
  • Tratamento de erros – exceções para dados ou tipos inválidos.


Exemplo 1: Parsing e leitura de dados

Vamos analisar um exemplo simples: temos uma string com JSON contendo informações sobre um usuário. Fazemos o parsing e extraímos os 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": ["чтение", "программирование", "спорт"] } )";

// Parsing da string para objeto json json user = json::parse(json_str);

// Acesso aos dados com verificação de tipo std::string name = user["name"]; int age = user["age"]; bool is_student = user["is_student"];

std::cout << "Nome: " << name << std::endl; std::cout << "Idade: " << age << std::endl; std::cout << "Estudante: " << (is_student ? "sim" : "não") << std::endl;

// Trabalho com array auto& hobbies = user["hobbies"]; std::cout << "Hobbies: "; for (const auto& hobby : hobbies) { std::cout << hobby << " "; } std::cout << std::endl;

return 0;}


Exemplo 2: Criação e serialização de JSON

Frequentemente é necessário formar uma estrutura JSON programaticamente. O código a seguir cria um objeto com dados de um livro e o exibe de forma formatada:



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

using json = nlohmann::json;

int main() { // Criamos um objeto vazio json book;

// Preenchemos os dados book["title"] = "Guerra e Paz"; book["author"] = "Liev Tolstói"; book["year"] = 1869; book["genres"] = {"romance", "literatura histórica"};

// Objeto aninhado book["publisher"]["name"] = "Eksmo";

Recommendations