Cómo analizar JSON en C ++

How Parse Json C



La intención de este tutorial es comprender los datos JSON y cómo analizar los datos JSON en C ++. Analizaremos los datos JSON, Object, Array, la sintaxis JSON y luego revisaremos varios ejemplos de trabajo para comprender el mecanismo de análisis de datos JSON en C ++.

¿Qué es JSON?

JSON es una representación ligera basada en texto para almacenar y transferir datos estructurados de forma organizada. Los datos JSON se representan en forma de listas ordenadas y pares clave-valor. JSON significa J ava S cript O objeto norte otación. Como indica el nombre completo, se deriva de JavaScript. Sin embargo, los datos JSON son compatibles con la mayoría de los lenguajes de programación populares.







A menudo se utiliza para transferir los datos del servidor a una página web. Es mucho más fácil y limpio representar los datos estructurados en JSON que en XML.



Regla de sintaxis JSON

Aquí están las reglas de sintaxis JSON:



  1. Los datos JSON siempre deben estar en forma de pares clave-valor.
  2. Los datos JSON están separados por comas.
  3. Se utiliza una llave para representar el objeto JSON.
  4. Se utiliza un corchete para representar una matriz JSON.

¿Qué son los datos JSON?

Los datos JSON se representan en forma de pares clave-valor. Esto es similar a un diccionario o hash en otros lenguajes de programación.





Nombre: Drake

Este es un ejemplo de datos JSON simples. La clave aquí es Nombre y Drake es el valor correspondiente. La clave, es decir, el nombre y el valor, es decir, Drake están separados por dos puntos.



Extensión de archivo JSON

Los datos JSON normalmente se almacenan en el archivo con la extensión .json. Por ejemplo, para almacenar los datos del empleado, simplemente puede nombrar el archivo como 'employee.json'. Este sería un archivo de texto simple. Luego puede abrir este archivo JSON en cualquiera de sus editores de texto favoritos.

Objeto JSON

El objeto JSON no es más que los datos JSON incluidos entre llaves. Aquí hay un objeto JSON de muestra:

{
Nombre:Pato,
ID de empleado:23547a,
Teléfono: 23547,
Departamento:Finanzas
}

Un objeto JSON puede contener varios datos JSON. Cada dato JSON está separado por una coma. Los datos JSON se representan como pares clave-valor. La clave, es decir, el nombre y el valor, es decir, Drake están separados por dos puntos. En el ejemplo anterior, hay cuatro pares clave-valor. La primera clave es Nombre; Drake es el valor correspondiente. Del mismo modo, EmployeeID, Phone y Department son las otras tres claves.

Matriz JSON

Una matriz JSON puede contener varios objetos JSON separados por comas. La matriz JSON está dentro de un corchete. Veamos un ejemplo de una matriz JSON:

'Estudiantes':[
{'primer nombre':'Sean', 'apellido':'Marrón'},
{'primer nombre':'Pato', 'apellido':'Williams'},
{'primer nombre':'Tomás', 'apellido':'Molinero'},
{primer nombre:Pedro,apellido:Johnson}
]

Este es un ejemplo de una matriz JSON. Aquí, Students se incluye entre corchetes, es decir, una matriz, y contiene cuatro objetos JSON. Cada uno de estos objetos se representa en forma de pares clave-valor y está separado por una coma.

Un archivo JSON de muestra

Ahora, dado que entendimos los datos JSON, los objetos JSON, la matriz JSON, veamos un ejemplo de un archivo JSON:

{
primer nombre:Sean,
apellido:marrón,
Identificación del Estudiante: 21453,
Departamento:Computer Sc.,
Asignaturas:[Matemáticas,Phy,Chem]
}

Análisis de bibliotecas en C ++:

No existe una solución nativa para analizar datos JSON en C ++. Sin embargo, existen varias bibliotecas para analizar datos JSON en C ++. En este artículo, analizaremos las dos bibliotecas más populares para analizar datos JSON en C ++. Aquí están los enlaces de GitHub para analizar datos JSON:

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

Es posible que desee descargar estas bibliotecas para poder ejecutar los ejemplos que se muestran a continuación.

Ejemplos de

Ahora, tenemos un conocimiento básico de los datos JSON, los objetos, las matrices y las bibliotecas de análisis disponibles. Veamos ahora un par de ejemplos para analizar datos JSON en C ++:

  • Ejemplo 1: analizar JSON en C ++
  • Ejemplo 2: analizar y serializar JSON en C ++
  • Ejemplo 3: analizar JSON en C ++

Para el Ejemplo-1 y el Ejemplo-2, usaremos la biblioteca nlohmann. En el caso del Ejemplo-3, usaremos la biblioteca RapidJSON.

Ejemplo 1: analizar JSON en C ++

En este programa de ejemplo, demostraremos cómo acceder a valores de datos JSON en C ++.

#incluir
#include 'json.hpp'

usando json=nlohmann::json;

En tprincipal()
{

// jdEmployees
json jdEmpleados=
{
{'primer nombre','Sean'},
{'apellido','Marrón'},
{'Identificación del Estudiante',21453},
{'Departamento','Computer Sc.'}
};

// Accede a los valores
horas::cuerdafName=jdEmployees.valor('primer nombre', 'UPS');
horas::cuerdalName=jdEmployees.valor('apellido', 'UPS');
En tsID=jdEmployees.valor('Identificación del Estudiante', 0);
horas::cuerdadepartamento=jdEmployees.valor('Departamento', 'UPS');

// Imprime los valores
horas::costo << 'Primer nombre: ' <<fName<<horas::endl;
horas::costo << 'Apellido: ' <<lName<<horas::endl;
horas::costo << 'Identificación del Estudiante: ' <<sID<<horas::endl;
horas::costo << 'Departamento: ' <<departamento<<horas::endl;

regreso 0;
}

Ejemplo 2: analizar y serializar JSON en C ++

En este programa de ejemplo, veremos cómo analizar y serializar JSON en C ++. Estamos usando json :: parse () para analizar los datos JSON.

#incluir
#include 'json.hpp'
#incluir

usando json=nlohmann::json;

En tprincipal()
{
// Aquí hay un texto JSON
carbonizarsetexto[] =R'(
{
'
Libro': {
'
Ancho': 450,
'
Altura': 30,
'
Título': 'Hola Mundo',
'
isBiography': falso,
'
NumOfCopies': 4,
'
LibraryIDs': [2319, 1406, 3854, 987]
}
}
)'
;

// Analicemos y serialicemos JSON
json j_complete=json::analizar gramaticalmente(texto);
horas::costo <<horas::setw(4) <<j_complete<<horas::endl;
}

Ejemplo 3: analizar JSON en C ++

Ahora, demostraremos cómo analizar una cadena JSON utilizando la biblioteca RapidJSON. RapidJSON se inspiró originalmente en RapidXML. En este programa de ejemplo, estamos analizando una cadena JSON en DOM. Hemos declarado mydoc de tipo Document y luego usamos el método mydoc.parse () para analizar la cadena JSON.

#incluir
#include 'rapidjson / writer.h'
#include 'rapidjson / document.h'
#include 'rapidjson / stringbuffer.h'

usando el espacio de nombres rapidjson;

En tprincipal()
{

constante carbonizarse*json= '{'primer nombre':'Sean','apellido':'marrón','empId':21453,
'
Departamento':'Computer Sc.'}';

// Analizar la cadena JSON en DOM
Documento mydoc;
mydoc.Analizar gramaticalmente(json);

// DOM para encadenar
Búfer StringBuffer;
Escritor<StringBuffer>escritor(buffer);

mydoc.Aceptar(escritor);

// Imprime la salida
horas::costo <<buffer.GetString() <<horas::endl;

regreso 0;
}

Conclusión

En este artículo, hemos discutido brevemente JSON datos, objeto, matriz y sintaxis. Como sabemos, no existe una solución nativa para el análisis de datos JSON en C ++; hemos utilizado dos bibliotecas diferentes para analizar datos JSON en C ++. Analizamos tres ejemplos diferentes para demostrar el mecanismo de análisis de datos JSON en C ++. En comparación con la biblioteca nlohmann, RapidJSON es pequeño, rápido y amigable con la memoria.