Como analisar JSON em C ++

Como analisar JSON em C ++
A intenção deste tutorial é entender os dados JSON e como analisar dados JSON em C++. Discutiremos dados JSON, Objeto, Array, Sintaxe JSON e depois passarmos por vários exemplos de trabalho para entender o mecanismo de análise dos dados JSON em C++.

O que é JSON?

JSON é uma representação leve baseada em texto para armazenar e transferir dados estruturados de maneira organizada. Os dados JSON são representados na forma de listas ordenadas e pares de valores-chave. JSON significa JAvaSCRIP Oobjeção NOtation. Como o nome completo indica, é derivado de JavaScript. No entanto, os dados JSON são suportados na maioria das linguagens de programação populares.

É frequentemente usado para transferir os dados do servidor para uma página da web. É muito mais fácil e limpo representar os dados estruturados no JSON do que XML.

Regra da sintaxe json

Aqui estão as regras da sintaxe JSON:

  1. Os dados JSON devem sempre estar na forma de pares de valor-chave.
  2. Os dados JSON são separados por vírgulas.
  3. Uma cinta encaracolada é usada para representar o objeto JSON.
  4. Um suporte quadrado é usado para representar uma matriz JSON.

O que são dados JSON?

Os dados JSON são representados na forma de pares de valor-chave. Isso é semelhante a um dicionário ou hash em outras linguagens de programação.

"Nome": "Drake"

Este é um exemplo de dados JSON simples. A chave aqui é "Nome" e "Drake" é o valor correspondente. A chave, eu.e., "Nome" e o valor, eu.e., "Drake" é separado por um cólon.

Extensão do arquivo JSON

Os dados JSON são normalmente armazenados no arquivo com a extensão de “.json ”. Por exemplo, para armazenar os dados do funcionário, você pode simplesmente nomear o arquivo como 'funcionário.JSON '. Este seria um arquivo de texto simples. Você pode abrir este arquivo json em qualquer um dos seus editores de texto favoritos.

Objeto json

O objeto JSON nada mais é do que os dados JSON incluídos no aparelho encaracolado. Aqui está um exemplo de objeto JSON:


"Nome": "Drake",
“ID do funcionário”: “23547a”,
“Telefone”: “23547”,
“Departamento”: “Finanças”

Um objeto JSON pode conter vários dados JSON. Cada dados JSON é separado por uma vírgula. Os dados JSON são representados como pares de valor-chave. A chave, eu.e., "Nome" e o valor, eu.e., "Drake" é separado por um cólon. No exemplo acima, existem quatro pares de valor-chave. A primeira chave é "nome"; "Drake" é o valor correspondente para isso. Da mesma forma, "Funcionário", "telefone" e "departamento" são as outras três chaves.

JSON Array

Uma matriz JSON pode conter vários objetos JSON se separados por vírgula. A matriz JSON está fechada dentro de um suporte quadrado. Vejamos um exemplo de uma matriz JSON:

"Alunos": [
"FirstName": "Sean", "LastName": "Brown",
"FirstName": "Drake", "LastName": "Williams",
"FirstName": "Tom", "LastName": "Miller",
"FirstName": "Peter", "LastName": "Johnson"
]

Este é um exemplo de uma matriz JSON. Aqui, "estudantes" está fechado com um suporte quadrado, eu.e., Array, e contém quatro objetos JSON. Cada um desses objetos é representado na forma de pares de valor-chave e é separado por uma vírgula.

Um arquivo json de amostra

Agora, como entendemos JSON Data, JSON Objects, JSON Array, veremos um exemplo de um arquivo JSON:


"FirstName": "Sean",
"Nome do último": "Brown",
"ID do aluno": 21453,
“Departamento”: “Computador SC.”,
"Assuntos": ["Math", "Phy", "Chem"]

Analisar bibliotecas em C ++:

Não há solução nativa para analisar dados JSON em C++. No entanto, existem várias bibliotecas para analisar dados JSON em C++. Neste artigo, vamos analisar as duas bibliotecas mais populares para analisar dados JSON em C++. Aqui estão os links do Github para analisar dados JSON:

  1. https: // github.com/nlohmann/json
  2. https: // github.com/tencent/rapidjson/

Você pode baixar essas bibliotecas para poder executar os exemplos mostrados abaixo.

Exemplos

Agora, temos um entendimento básico de dados JSON, objetos, matrizes e bibliotecas de análise disponíveis. Agora vamos olhar para alguns exemplos para analisar dados JSON em C ++:

  • Exemplo 1: Parse json em c++
  • Exemplo 2: Parse e serialize JSON em C++
  • Exemplo 3: Parse JSON em C++

Por exemplo, 1 e Exemplo-2, vamos usar a biblioteca “Nlohmann”. No caso do Exemplo-3, usaremos a biblioteca "Rapidjson".

Exemplo 1: Parse json em c++

Neste programa de exemplo, demonstraremos como acessar valores de dados JSON em C++.

#incluir
#include "JSON.HPP "
usando json = nlohmann :: json;
int main ()

// jDemployes
JSON JDEMPLAPEES =
"FirstName", "Sean",
"LastName", "Brown",
"StudentId", 21453,
"Departamento", "Computador SC.";
// Acesse os valores
std :: string fname = jdemployees.valor ("primeiro nome", "oops");
std :: string lname = jdemployees.value ("lastName", "oops");
int sid = jdemployes.valor ("StudentId", 0);
std :: string departamento = jDemployes.valor ("departamento", "oops");
// imprima os valores
std :: cout << "First Name: " << fName << std::endl;
std :: cout << "Last Name: " << lName << std::endl;
std :: cout << "Student ID: " << sID << std::endl;
std :: cout << "Department: " << dept << std::endl;
retornar 0;

Exemplo 2: Parse e serialize JSON em C++

Neste programa de exemplo, vamos ver como analisar e serializar JSON em C++. Estamos usando "JSON :: parse ()" para analisar os dados JSON.

#incluir
#include "JSON.HPP "
#incluir
usando json = nlohmann :: json;
int main ()

// aqui está um texto JSON
char text [] = r "(

"Livro":
"Largura": 450,
"Altura": 30,
"Title": "Hello World",
"Isbiografia": Falso,
"NUMOFCOPIES": 4,
"Bibliotecas": [2319, 1406, 3854, 987]


) ";
// Vamos analisar e serializar JSON
json j_complete = json :: parse (texto);
std :: cout << std::setw(4) << j_complete << std::endl;

Exemplo 3: Parse JSON em C++

Agora, demonstraremos como analisar a string json usando a biblioteca Rapidjson. Rapidjson foi originalmente inspirado pelo RapidXML. Neste programa de exemplo, estamos analisando uma string json em DOM. Declaramos "mydoc" do tipo "documento" e depois usando o "mydoc.Método parse () ”para analisar a corda JSON.

#incluir
#include "Rapidjson/Writer.h "
#include "RAPIDJSON/DOCUMENTO.h "
#include "rapidjson/stringbuffer.h "
usando o espaço para nome Rapidjson;
int main ()

const char* json = "" FirstName ":" Sean "," LastName ":" Brown "," Empid ": 21453,
"Departamento": "Computador SC."";
// Analisar a corda JSON em DOM
Documentar mydoc;
mydoc.Parse (JSON);
// DOM para string
Buffer de StringBuffer;
Escritor escritor (buffer);
mydoc.Aceitar (escritor);
// Imprima a saída
std :: cout << buffer.GetString() << std::endl;
retornar 0;

Conclusão

Neste artigo, discutimos brevemente dados JSON, objeto, matriz e sintaxe. Como sabemos, não existe uma solução nativa para a análise de dados JSON em C ++; Usamos duas bibliotecas diferentes para analisar dados JSON em C++. Procuramos três exemplos diferentes para demonstrar o mecanismo de análise de dados JSON em C++. Em comparação com a biblioteca "Nlohmann", o Rapidjson é pequeno, rápido e amigável.