Como analisar JSON em C ++

How Parse Json 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, examinaremos 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 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:



  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, 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:

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