C ++

Como analisar JSON em C ++

Como analisar JSON em C ++
A intenção deste tutorial é entender os dados JSON e como analisar os dados JSON em C++. Discutiremos dados JSON, objeto, matriz, sintaxe JSON e, em seguida, passaremos por vários exemplos de trabalho para entender o mecanismo de análise de dados JSON em C++.

O que é JSON?

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

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

Regra de sintaxe JSON

Aqui estão as regras de sintaxe JSON:

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

O que são dados JSON?

Os dados JSON são representados na forma de pares de valores-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, i.e., “Drake” são separados por dois pontos.

Extensão de arquivo JSON

Os dados JSON são normalmente armazenados no arquivo com a extensão “.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 então abrir este arquivo JSON em qualquer um de seus editores de texto favoritos.

Objeto JSON

O objeto JSON nada mais é do que os dados JSON entre chaves. Aqui está um objeto JSON de amostra:


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

Um objeto JSON pode conter vários dados JSON. Cada dado JSON é separado por uma vírgula. Os dados JSON são representados como pares de valores-chave. A chave, eu.e., “Nome” e o valor, i.e., “Drake” são separados por dois pontos. No exemplo acima, existem quatro pares de valores-chave. A primeira chave é “Nome”; “Drake” é o valor correspondente para isso. Da mesma forma, "EmployeeID", "Phone" e "Department" são as outras três chaves.

Matriz JSON

Uma matriz JSON pode conter vários objetos JSON separados por vírgulas. A matriz JSON está entre colchetes. 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, “Alunos” está entre colchetes, i.e., array, e contém quatro objetos JSON. Cada um desses objetos é representado na forma de pares de valores-chave e são separados por uma vírgula.

Um exemplo de arquivo JSON

Agora, como entendemos os dados JSON, objetos JSON, array JSON, vamos dar uma olhada em um exemplo de arquivo JSON:


“FirstName”: “Sean”,
“LastName”: “Brown”,
“Carteira de Estudante”: 21453,
“Departamento”: “Computador Sc.”,
“Assuntos”: [“Matemática”, “Phy”, “Química”]

Analisando 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 dar uma olhada nas 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 querer baixar essas bibliotecas para poder executar os exemplos mostrados abaixo.

Exemplos

Agora, temos uma compreensão básica de dados JSON, objetos, matrizes e bibliotecas de análise disponíveis. Vejamos agora alguns exemplos para analisar dados JSON em C ++:

Para Exemplo-1 e Exemplo-2, vamos fazer uso da biblioteca “nlohmann”. No caso do Exemplo-3, usaremos a biblioteca “RapidJSON”.

Exemplo-1: Analisar 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 ()

// jdEmployees
json jdEmployees =

"firstName", "Sean",
"lastName", "Brown",
"StudentID", 21453,
"Departamento", "Computador Sc."
;
// Acesse os valores
std :: string fName = jdEmployees.valor ("firstName", "ops");
std :: string lName = jdEmployees.valor ("lastName", "ops");
int sID = jdEmployees.valor ("StudentID", 0);
std :: string dept = jdEmployees.valor ("Departamento", "ops");
// Imprime 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;
return 0;

Exemplo-2: analisar e serializar JSON em C++

Neste programa de exemplo, veremos 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
texto char [] = R "(

"Livro":
"Largura": 450,
"Altura": 30,
"Título": "Olá, Mundo",
"isBiografia": falso,
"NumOfCopies": 4,
"LibraryIDs": [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: Analisar JSON em C++

Agora, vamos demonstrar como analisar string JSON usando a biblioteca RapidJSON. RapidJSON foi originalmente inspirado no RapidXML. Neste programa de exemplo, estamos analisando uma string JSON em DOM. Declaramos “mydoc” do tipo “Document” e, em seguida, usando o “mydoc.parse () ”método para analisar a string JSON.

#incluir
#include "rapidjson / writer.h "
#include "rapidjson / document.h "
#include "rapidjson / stringbuffer.h "
usando o namespace rapidjson;
int main ()

const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"departamento": "Computador Sc."";
// Analisa a string JSON em DOM
Document mydoc;
mydoc.Analisar (json);
// DOM para string
StringBuffer buffer;
escritor escritor (buffer);
mydoc.Aceitar (escritor);
// Imprime a saída
std :: cout << buffer.GetString() << std::endl;
return 0;

Conclusão

Neste artigo, discutimos brevemente dados JSON, objeto, matriz e sintaxe. Como sabemos, não existe uma solução nativa para análise de dados JSON em C ++; usamos duas bibliotecas diferentes para analisar dados JSON em C++. Vimos 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 de fácil memória.

5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...
Batalha por Wesnoth 1.13.6 Desenvolvimento lançado
Batalha por Wesnoth 1.13.6 lançado no mês passado, é o sexto lançamento de desenvolvimento no 1.13.série x e oferece uma série de melhorias, principal...
Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...