RapidJSON para C++: guia completo com exemplos práticos
RapidJSON é uma biblioteca de alto desempenho para análise e geração de JSON na linguagem C++. Criada por Milo Yip e distribuída sob a licença MIT, ela conquistou popularidade graças à sua velocidade, consumo mínimo de memória e conformidade total com o padrão ECMA-404 (RFC 7159). Diferente de muitas outras bibliotecas, o RapidJSON não requer dependências externas e pode funcionar em ambientes com recursos limitados, incluindo sistemas embarcados.
Por que usar esta biblioteca? JSON (JavaScript Object Notation) se tornou o padrão de fato para troca de dados entre serviços web, arquivos de configuração e armazenamento de dados estruturados. Em C++, onde o desempenho é crítico, usar um parser lento pode se tornar um gargalo. O RapidJSON resolve esse problema: ele é capaz de processar megabytes de JSON em milissegundos, usando uma API estilo SAX (streaming) para minimizar alocações e uma API DOM para manipulação conveniente da árvore de objetos. Isso o torna a escolha ideal para servidores de alta carga, engines de jogos e aplicações em tempo real.
A biblioteca suporta tanto a análise completa de JSON (com validação) quanto um modo "insensível" para acelerar o processo. Ela trabalha com UTF-8, UTF-16 e UTF-32, além de fornecer iteradores e funções práticas para busca. O RapidJSON é ativamente usado em projetos como MongoDB, Tencent e diversas soluções open-source.
Instalação
RapidJSON é uma biblioteca header-only (com exceção de arquivos opcionais para compilação). Isso significa que, para usá-la, basta copiar os arquivos de cabeçalho para o seu projeto e incluí-los. No entanto, para sua conveniência, vamos abordar três formas principais de instalação.
Método 1: Clonando o repositório (recomendado)
Clone o repositório do GitHub e copie a pasta include/rapidjson para o seu projeto.
git clone https://github.com/Tencent/rapidjson.git
# Em seguida, copie a pasta include/rapidjson para o seu projeto
Método 2: Via gerenciador de pacotes vcpkg
Se você usa vcpkg, a instalação é feita com um único comando:
vcpkg install rapidjson
Método 3: Via Conan
Para usuários do Conan (gerenciador de pacotes C/C++):
conan install rapidjson/1.1.0@
Inclusão no código
Após a instalação, adicione ao seu arquivo fonte:
#include "rapidjson/document.h" // para a API DOM
#include "rapidjson/writer.h" // para escrever JSON
#include "rapidjson/stringbuffer.h" // para buffer de saída
#include "rapidjson/prettywriter.h" // para saída formatada
#include "rapidjson/reader.h" // para a API SAX
#include "rapidjson/error/en.h" // para tratamento de erros
Início rápido: exemplo mínimo funcional
Vamos escrever um programa simples que analisa uma string JSON, extrai um valor e o exibe na tela.
#include <iostream>
#include "rapidjson/document.h"
int main() {
// 1. String JSON para análise
const char* json = "{\"project\":\"RapidJSON\",\"version\":1.0}";
// 2. Cria o documento DOM
rapidjson::Document doc;
doc.Parse(json);
// 3. Verifica se a análise foi bem-sucedida
if (doc.HasParseError()) {
std::cerr << "Erro de análise: "
<< rapidjson::GetParseError_En(doc.GetParseError())
<< std::endl;
return 1;
}
// 4. Extrai valores pelas chaves
const std::string& project = doc["project"].GetString();
double version = doc["version"].GetDouble();
// 5. Exibe o resultado
std::cout << "Projeto: " << project << std::endl;
std::cout << "Versão: " << version << std::endl;
return 0;
}