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: Por que usar JSON em C++?

\n

JSON (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++.

\n

Neste 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.

\n

Para 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\n

Instalação da biblioteca nlohmann/json

\n

Antes 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\n

Método 1: Baixar o arquivo json.hpp

\n
    \n
  • Acesse o repositório GitHub nlohmann/json.
  • \n
  • Baixe o arquivo json.hpp da versão mais recente.
  • \n
  • Coloque-o na pasta do seu projeto.
  • \n
  • Inclua no código: #include "json.hpp"
  • \n
\n\n

Método 2: Usar um gerenciador de pacotes (vcpkg / Conan)

\n

Se você usa CMake, a maneira mais fácil é instalar a biblioteca via vcpkg:

\n
vcpkg install nlohmann-json
\n

Ou via Conan:

\n
conan install nlohmann_json/3.11.2@
\n\n

Após a instalação, inclua a biblioteca no código:

\n
#include <nlohmann/json.hpp>\nusing json = nlohmann::json;
\n\n

Agora você está pronto para começar!

\n\n

Parsing de JSON em C++: leitura de dados

\n

Parsing é 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\n

Exemplo 1: Parsing de uma string JSON

\n

Suponha 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\n

O 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\n

Resultado da execução:

\n
Nome: Alexey\nIdade: 30\nEstudante? não\nHobbies: leitura programação bicicleta
\n\n

Exemplo 2: Manipulação de objetos aninhados

\n

JSON 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\n

Acesso a dados aninhados:

\n


                
                

Blogs

Book Recommendations