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 J ava S cript OU bjeto N otaçã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.
Geralmente é 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, ou seja, Nome e o valor, ou seja, 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 ‘employee.json’. Este seria um arquivo de texto simples. Você pode então abrir esse 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 Empregado:23547a,
Telefone: 23547,
Departamento:Finança
}
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 valor-chave. A chave, ou seja, Nome e o valor, ou seja, Drake são separados por dois pontos. No exemplo acima, existem quatro pares de valores-chave. A primeira chave é o nome; Drake é o valor correspondente para ele. 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 matriz JSON:
'Alunos':[{'primeiro nome':'Sean', 'último nome':'Marrom'},
{'primeiro nome':'Drake', 'último nome':'Williams'},
{'primeiro nome':'Tom', 'último nome':'Moleiro'},
{primeiro nome:Peter,último nome:Johnson}
]
Este é um exemplo de uma matriz JSON. Aqui, Students é colocado entre colchetes, ou seja, array, e contém quatro objetos JSON. Cada um desses objetos é representado na forma de pares de valores-chave e é separado por uma vírgula.
Um exemplo de arquivo JSON
Agora, uma vez que entendemos os dados JSON, objetos JSON, array JSON, vamos ver um exemplo de arquivo JSON:
{primeiro nome:Sean,
último nome:marrom,
Identidade estudantil: 21453,
Departamento:Computer Sc.,
assuntos:[Matemática,Phy,Chem]
}
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:
Você pode querer baixar essas bibliotecas para poder executar os exemplos mostrados abaixo.
Exemplos
Agora, temos um conhecimento básico 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;
inta Principal()
{
// jdEmployees
json jdEmployees=
{
{'primeiro nome','Sean'},
{'último nome','Marrom'},
{'Identidade estudantil',21453},
{'Departamento','Computer Sc.'}
};
// Acesse os valores
horas::fragmentofNome=jdEmployees.valor('primeiro nome', 'oops');
horas::fragmentolNome=jdEmployees.valor('último nome', 'oops');
intsID=jdEmployees.valor('Identidade estudantil', 0);
horas::fragmentodepartamento=jdEmployees.valor('Departamento', 'oops');
// Imprime os valores
horas::custo << 'Primeiro nome: ' <<fNome<<horas::endl;
horas::custo << 'Último nome: ' <<lNome<<horas::endl;
horas::custo << 'Identidade estudantil: ' <<sID<<horas::endl;
horas::custo << 'Departamento:' <<departamento<<horas::endl;
Retorna 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;
inta Principal()
{
// Aqui está um texto JSON
Caracterestexto[] =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::analisar(texto);
horas::custo <<horas::setw(4) <<j_complete<<horas::endl;
}
Exemplo-3: Analisar JSON em C ++
Agora, vamos demonstrar como analisar string JSON usando a biblioteca RapidJSON. O RapidJSON foi originalmente inspirado no RapidXML. Neste programa de exemplo, estamos analisando uma string JSON no DOM. Declaramos mydoc do tipo Document e, em seguida, usamos o método mydoc.parse () para analisar a string JSON.
#incluir#include 'rapidjson / writer.h'
#include 'rapidjson / document.h'
#include 'rapidjson / stringbuffer.h'
usando namespace rapidjson;
inta Principal()
{
const Caracteres*json= '{'primeiro nome':'Sean','último nome':'marrom','vazio': 21453,
'departamento':'Computer Sc.'}';
// Analisa a string JSON em DOM
Documento mydoc;
mydoc.Analisar(json);
// DOM para string
StringBuffer buffer;
escritor<StringBuffer>escritor(amortecedor);
mydoc.Aceitar(escritor);
// Imprime a saída
horas::custo <<amortecedor.GetString() <<horas::endl;
Retorna 0;
}
Conclusão
Neste artigo, discutimos brevemente JSON dados, 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.