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 Também na biblioteca
Filas de tarefas em Kotlin: Coroutines, Flow e bibliotecas para processamento em segundo plano
Parsing de HTML em Go: visão geral das bibliotecas e exemplos de código
SwiftConfig