Cómo analizar JSON en C ++

Cómo analizar JSON en C ++
La intención de este tutorial es comprender los datos de JSON y cómo analizar los datos JSON en C++. Discutiremos los datos JSON, el objeto, la matriz, la sintaxis de JSON, y luego pasaremos por varios ejemplos de trabajo para comprender el mecanismo de análisis de los datos JSON en C++.

Que es json?

JSON es una representación basada en texto de peso ligero para almacenar y transferir datos estructurados de manera organizada. Los datos JSON están representados en forma de listas ordenadas y pares de valores clave. JSON significa JavaStorto Oatar norteotación. Como lo 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 usa 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 XML.

Regla de sintaxis json

Aquí están las reglas de sintaxis JSON:

  1. Los datos JSON siempre deben estar en forma de pares de valores clave.
  2. Los datos de JSON están separados por comas.
  3. Se usa un aparato ortopédico rizado para representar el objeto JSON.
  4. Se utiliza un soporte cuadrado para representar una matriz JSON.

¿Qué son los datos de JSON??

Los datos JSON están representados en forma de pares de valores clave. 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, yo.mi., "Nombre" y el valor, yo.mi., "Drake" están separados por un colon.

Extensión del archivo JSON

Los datos JSON normalmente se almacenan en el archivo con la extensión de ".json ". Por ejemplo, para almacenar los datos del empleado, simplemente puede nombrar el archivo como 'empleado.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 adjuntos dentro de los aparatos ortopédicos. Aquí hay una muestra del objeto JSON:


"Nombre": "Drake",
"ID de empleado": "23547a",
"Teléfono": "23547",
"Departamento": "Finanzas"

Un objeto JSON puede contener múltiples datos JSON. Cada datos de JSON está separado por una coma. Los datos de JSON se representan como pares de valor clave. La clave, yo.mi., "Nombre" y el valor, yo.mi., "Drake" están separados por un colon. En el ejemplo anterior, hay cuatro pares de valor clave. La primera clave es "Nombre"; "Drake" es el valor correspondiente para ello. Del mismo modo, "EmployeeId", "Teléfono" y "Departamento" son las otras tres claves.

Matriz de json

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

"Estudiantes":[
"FirstName": "Sean", "LastName": "Brown",
"FirstName": "Drake", "LastName": "Williams",
"FirstName": "Tom", "LastName": "Miller",
"FirstName": "Peter", "LastName": "Johnson"
]

Este es un ejemplo de una matriz JSON. Aquí, "estudiantes" está encerrado con un soporte cuadrado, yo.mi., matriz, y contiene cuatro objetos JSON. Cada uno de estos objetos se representa en forma de pares de valor clave y está separado por una coma.

Un archivo JSON de muestra

Ahora, dado que entendimos los datos JSON, JSON Objects, JSON Array, veamos un ejemplo de un archivo JSON:


"FirstName": "Sean",
"LastName": "Brown",
"ID de estudiante": 21453,
"Departamento": "SC Computer.",
"Temas": ["Matemáticas", "Phy", "Chem"]

Analizando bibliotecas en C ++:

No hay una solución nativa para analizar los datos de JSON en C++. Sin embargo, hay varias bibliotecas para analizar los datos JSON en C++. En este artículo, vamos a investigar las dos bibliotecas más populares para analizar los datos JSON en C++. Aquí están los enlaces GitHub para analizar los 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

Ahora, tenemos una comprensión básica de los datos JSON, objetos, matrices y bibliotecas de análisis disponibles. Veamos ahora un par de ejemplos para analizar los datos JSON en C ++:

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

Por ejemplo, 1 y Ejemplo-2, vamos a hacer uso de la biblioteca "Nlohmann". En el caso del Ejemplo-3, utilizaremos la biblioteca "Rapidjson".

Ejemplo-1: analizar JSON en C++

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

#incluir
#Include "Json.HPP "
usando json = nlohmann :: json;
int main ()

// jdemployees
JSON JDEMPRISEES =
"FirstName", "Sean",
"LastName", "Brown",
"StudentId", 21453,
"Departamento", "Computer SC.";
// Acceda a los valores
std :: string fname = jDemployees.valor ("primer nombre", "oops");
std :: string lname = jDemployees.valor ("lastname", "oops");
int sid = jDemployees.valor ("studentId", 0);
std :: string dept = jDemployees.valor ("departamento", "oops");
// imprime los 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;
regresar 0;

Ejemplo-2: analizar y serializar JSON en C++

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

#incluir
#Include "Json.HPP "
#incluir
usando json = nlohmann :: json;
int main ()

// Aquí hay un texto JSON
texto de char [] = r "(

"Libro":
"Ancho": 450,
"Altura": 30,
"Título": "Hola mundo",
"Isbiografía": Falso,
"NumOfcopies": 4,
"Biblioteca": [2319, 1406, 3854, 987]


) ";
// Vamos a analizar y serializar a JSON
json j_complete = json :: parse (texto);
std :: cout << std::setw(4) << j_complete << std::endl;

Ejemplo-3: Parse JSON en C++

Ahora, demostraremos cómo analizar la cadena JSON usando 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 "documento" y luego usando el "mydoc.método parse () "para analizar la cadena JSON.

#incluir
#Include "Rapidjson/escritor.H "
#Include "Rapidjson/documento.H "
#Include "Rapidjson/StringBuffer.H "
Uso del espacio de nombres Rapidjson;
int main ()

const char* json = "" FirstName ":" Sean "," LastName ":" Brown "," Empid ": 21453,
"Departamento": "Computer SC."";
// analiza la cadena JSON en DOM
Documentar mydoc;
mydoc.Parse (json);
// dom para la cadena
StringBuffer Buffer;
Escritor escritor (búfer);
mydoc.Aceptar (escritor);
// imprime la salida
std :: cout << buffer.GetString() << std::endl;
regresar 0;

Conclusión

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