Processamento JSON em C++: visão geral das bibliotecas e exemplos práticos
JSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado em aplicações web, APIs e arquivos de configuração. Em C++, o trabalho com JSON não está embutido na biblioteca padrão, portanto, os desenvolvedores usam bibliotecas de terceiros. Neste artigo, examinaremos três das ferramentas mais populares: nlohmann/json, RapidJSON e Boost.JSON. Você aprenderá como instalá-las, fazer parsing de JSON, criar suas próprias estruturas e serializar dados. Todos os exemplos são acompanhados de código em C++.
1. Biblioteca nlohmann/json
nlohmann/json é a biblioteca mais popular para trabalhar com JSON em C++. Ela é conhecida por sua sintaxe simples e intuitiva, que lembra Python ou JavaScript. A biblioteca é header-only (apenas arquivos de cabeçalho), o que facilita a integração: basta copiar o arquivo json.hpp para o projeto.
Instalação
Baixe o json.hpp do GitHub e inclua-o:
#include "json.hpp"using json = nlohmann::json;Parsing de uma string 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;}Criação e serialização 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 — indentação para saída formatadastd::cout << serialized << std::endl;2. Biblioteca RapidJSON
RapidJSON é uma biblioteca de alto desempenho, focada em velocidade e uso mínimo de memória. Ela também é header-only e suporta parsing no estilo SAX (streaming) e estilo DOM (construção de árvore). É adequada para projetos onde o desempenho é importante, como em motores de jogos ou servidores de alta carga.
Instalação
Baixe os arquivos do repositório RapidJSON e inclua:
#include "rapidjson/document.h"#include "rapidjson/writer.h"#include "rapidjson/stringbuffer.h"Parsing 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;}Criação de JSON e serialização
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 das bibliotecas Boost, oficialmente aceita no C++ Bo
Também na biblioteca
Filas de tarefas em Kotlin: Coroutines, Flow e bibliotecas para processamento em segundo plano
Trabalho com arquivos ZIP em TypeScript: biblioteca JSZip e utilitários
Envio de Email em Go
Geolocalização e Mapas em C# (.NET): bibliotecas, exemplos e recomendações
Accompanist para Kotlin: guia completo com exemplos práticos