Trabalhando com JSON em C++: parsing e serialização para iniciantes

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

Introdução ao trabalho com JSON em C++

JSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado em desenvolvimento web, arquivos de configuração e APIs. Apesar de C++ não ter suporte nativo a JSON, existem diversas bibliotecas que tornam o trabalho com este formato simples e conveniente. Neste artigo, veremos como fazer parsing (analisar) e serializar (criar) dados JSON em C++ usando a popular biblioteca nlohmann/json. O material é voltado para desenvolvedores iniciantes que já conhecem os fundamentos de C++.



1. Instalação e inclusão da biblioteca nlohmann/json

A biblioteca nlohmann/json é uma das mais populares e fáceis de usar para trabalhar com JSON em C++. Ela suporta C++11 e superior, além de funcionar em todas as principais plataformas.

Formas de instalação

  • Baixar o arquivo de cabeçalho: acesse o repositório no GitHub e baixe o arquivo json.hpp.
  • Instalação via vcpkg: vcpkg install nlohmann-json
  • Instalação via Conan: conan install nlohmann_json/3.11.2@

Após a instalação, basta incluir o arquivo no seu projeto:

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

int main() { std::cout << "Biblioteca incluída!" << std::endl; return 0;}


2. Parsing JSON: leitura de dados a partir de string e arquivo

Parsing (análise) de JSON é o processo de converter uma string no formato JSON em estruturas de dados C++. A biblioteca nlohmann/json torna isso muito simples.



Parsing a partir de string

Veja um exemplo de análise de um objeto JSON simples:

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

int main() { std::string json_str = R"({ "name": "Ana", "age": 25, "is_student": false, "hobbies": ["leitura", "natação", "programação"] })";

// Parsing da string json data = json::parse(json_str);

// Acesso aos dados std::string name = data["name"]; int age = data["age"]; bool is_student = data["is_student"]; std::vector<std::string> hobbies = data["hobbies"];

std::cout << "Nome: " << name << std::endl; std::cout << "Idade: " << age << std::endl; std::cout << "Estudante: " << (is_student ? "sim" : "não") << std::endl; std::cout << "Hobbies: "; for (const auto& hobby : hobbies) { std::cout << hobby << " "; } std::cout << std::endl;

return 0;}


Parsing a partir de arquivo

Frequentemente, os dados JSON são armazenados em arquivos. Veja como lê-los:

#include <iostream>#include <fstream>#include "json.hpp"using json = nlohmann::json;

int main() { std::ifstream file("data.json"); if (!file.is_open()) { std::cerr << "Erro ao abrir o arquivo!" << std::endl; return 1; }

json data = json::parse(file); file.close();

// Exibição dos dados std::cout << "Dados do arquivo: " << data.dump(4) << std::endl; return 0;}

O método dump(4) converte o JSON de volta para uma string com indentação de 4 espaços para facilitar a leitura.



3. Serialização: criação de JSON a partir de dados C++

Serialização é o processo inverso: converter dados C++ em uma string JSON. A biblioteca permite criar objetos JSON de forma intuitiva.



Criação de um objeto JSON simples

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

int main() { json person;

person["name"] = "João";

Blogs

Book Recommendations