Processamento JSON em C++: bibliotecas, parsing e serialização de 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++: bibliotecas, parsing e exemplos



JSON (JavaScript Object Notation) — um dos formatos de troca de dados mais populares. Apesar de C++ não ter suporte nativo a JSON, existem várias bibliotecas poderosas que permitem analisar, gerar e modificar dados JSON facilmente. Neste artigo, veremos três bibliotecas principais: nlohmann/json, RapidJSON e Boost.PropertyTree, além de apresentar exemplos práticos de uso.



Por que uma biblioteca para JSON em C++?

C++ é uma linguagem compilada focada em desempenho. Analisar JSON manualmente com expressões regulares ou operações de string é uma tarefa trabalhosa e propensa a erros. Bibliotecas especializadas oferecem:

  • Alta velocidade de parsing e serialização.
  • API intuitiva (frequentemente no estilo STL).
  • Suporte aos padrões JSON (incluindo objetos aninhados, arrays, null, Unicode).
  • Mínimo de dependências (geralmente header-only).


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

A biblioteca mais popular e fácil de usar. Distribuída como header-only (um único arquivo de cabeçalho). Ideal para projetos educacionais e aplicações pequenas.



Instalação

Baixe o arquivo json.hpp do repositório nlohmann/json e inclua-o:

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


Exemplo: parsing de JSON a partir de uma string

#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;}


Exemplo: criação e serialização 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 — indentação para saída bonita std::cout << serialized << "";

return 0;}


2. Biblioteca RapidJSON

RapidJSON é uma biblioteca de alto desempenho, focada em velocidade e consumo mínimo de memória. Frequentemente usada em jogos, aplicações servidoras e sistemas embarcados. Suporta estilo SAX (parsing de fluxo) e estilo DOM.



Instalação

Baixe o arquivo do GitHub e inclua os arquivos de cabeçalho:

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


Exemplo: parsing e leitura

#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;}


Exemplo: geração de JSON

#include <iostream>#include "rapidjson/docume                    

Recommendations