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:
- Os dados JSON devem estar sempre na forma de pares de valores-chave.
- Os dados JSON são separados por vírgulas.
- Uma chave Curly é usada para representar o objeto JSON.
- 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:
- https: // github.com / nlohmann / json
- 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 ++:
- Exemplo-1: Analisar JSON em C++
- Exemplo-2: analisar e serializar JSON em C++
- Exemplo-3: Analisar 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
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.