Introdução: Por que usar JSON em C++?
\nJSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado em aplicações web, arquivos de configuração e APIs. Apesar de ter surgido originalmente no JavaScript, hoje se tornou o padrão de facto para transmitir dados estruturados entre servidor e cliente em qualquer linguagem de programação, incluindo C++.
\nNeste artigo, vamos abordar como trabalhar com JSON em C++: fazer parsing (ler) e serializar (criar) dados JSON. O material é voltado para desenvolvedores iniciantes que já conhecem os fundamentos de C++ (variáveis, funções, classes), mas ainda não trabalharam com JSON.
\nPara trabalhar com JSON em C++, usaremos a popular biblioteca nlohmann/json (também conhecida como JSON for Modern C++). Ela é simples de instalar, intuitiva e excelente para aprendizado.
\n\nInstalação da biblioteca nlohmann/json
\nAntes de escrever código, é necessário incluir a biblioteca. A maneira mais simples é usar a versão header-only (apenas um arquivo de cabeçalho é suficiente).
\n\nMétodo 1: Baixar o arquivo json.hpp
\n- \n
- Acesse o repositório GitHub nlohmann/json. \n
- Baixe o arquivo
json.hppda versão mais recente. \n - Coloque-o na pasta do seu projeto. \n
- Inclua no código:
#include "json.hpp"\n
Método 2: Usar um gerenciador de pacotes (vcpkg / Conan)
\nSe você usa CMake, a maneira mais fácil é instalar a biblioteca via vcpkg:
\nvcpkg install nlohmann-json\nOu via Conan:
\nconan install nlohmann_json/3.11.2@\n\nApós a instalação, inclua a biblioteca no código:
\n#include <nlohmann/json.hpp>\nusing json = nlohmann::json;\n\nAgora você está pronto para começar!
\n\nParsing de JSON em C++: leitura de dados
\nParsing é o processo de converter uma string JSON em um objeto com o qual se pode trabalhar no código. A biblioteca nlohmann/json torna isso extremamente simples.
\n\nExemplo 1: Parsing de uma string JSON
\nSuponha que temos uma string JSON contendo informações sobre um usuário:
\n{\n "name": "Alexey",\n "age": 30,\n "is_student": false,\n "hobbies": ["leitura", "programação", "bicicleta"]\n}\n\nO parsing é feito em uma única linha:
\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main() {\n // String JSON original\n std::string json_str = R"(\n {\n "name": "Alexey",\n "age": 30,\n "is_student": false,\n "hobbies": ["leitura", "programação", "bicicleta"]\n }\n )";\n\n // Parsing\n json data = json::parse(json_str);\n\n // Acesso aos dados\n std::string name = data["name"];\n int age = data["age"];\n bool is_student = data["is_student"];\n std::vector<std::string> hobbies = data["hobbies"];\n\n // Saída\n std::cout << "Nome: " << name << std::endl;\n std::cout << "Idade: " << age << std::endl;\n std::cout << "Estudante? " << (is_student ? "sim" : "não") << std::endl;\n std::cout << "Hobbies: ";\n for (const auto& hobby : hobbies) {\n std::cout << hobby << " ";\n }\n std::cout << std::endl;\n\n return 0;\n}\n\nResultado da execução:
\nNome: Alexey\nIdade: 30\nEstudante? não\nHobbies: leitura programação bicicleta\n\nExemplo 2: Manipulação de objetos aninhados
\nJSON frequentemente contém estruturas aninhadas. Vejamos um exemplo com endereço:
\n{\n "user": {\n "name": "Maria",\n "address": {\n "city": "Moscou",\n "street": "Tverskaya"\n }\n }\n}\n\nAcesso a dados aninhados:
\nBlogs
Book Recommendations
Leia também
Git workflow para desenvolvedor JavaScript: como não quebrar a produção
Padrões de Projeto em Swift com exemplos de código para iOS
WebSocket em JavaScript: aplicações real-time avançadas com Node.js
Clean Code em C#: princípios e exemplos para iniciantes
Testes em Rust: unit, integration, e2e — guia completo