C ++

Как разобрать JSON в C ++

Как разобрать JSON в C ++
Цель этого руководства - понять данные JSON и понять, как анализировать данные JSON в C++. Мы обсудим данные JSON, объект, массив, синтаксис JSON, а затем рассмотрим несколько рабочих примеров, чтобы понять механизм анализа данных JSON в C++.

Что такое JSON?

JSON - это легкое текстовое представление для хранения и передачи структурированных данных организованным способом. Данные JSON представлены в виде упорядоченных списков и пар ключ-значение. JSON означает JаваSскрипт Object Nответ. Как видно из полного названия, он получен из JavaScript. Однако данные JSON поддерживаются в большинстве популярных языков программирования.

Часто используется для передачи данных с сервера на веб-страницу. Представлять структурированные данные в JSON намного проще и чище, чем в XML.

Правило синтаксиса JSON

Вот правила синтаксиса JSON:

  1. Данные JSON всегда должны быть в виде пар ключ-значение.
  2. Данные JSON разделяются запятыми.
  3. Фигурная скобка используется для представления объекта JSON.
  4. Квадратная скобка используется для представления массива JSON.

Что такое данные JSON?

Данные JSON представлены в виде пар ключ-значение. Это похоже на словарь или хеш в других языках программирования.

«Имя»: «Дрейк»

Это пример простых данных JSON. Ключ здесь - «Имя», а «Дрейк» - соответствующее значение. Ключ, я.е., «Имя» и значение, i.е., «Селезень» разделяются двоеточием.

Расширение файла JSON

Данные JSON обычно хранятся в файле с расширением «.json ». Например, чтобы сохранить данные сотрудника, вы можете просто назвать файл как «сотрудник.json '. Это будет простой текстовый файл. Затем вы можете открыть этот файл JSON в любом из ваших любимых текстовых редакторов.

Объект JSON

Объект JSON - это не что иное, как данные JSON, заключенные в фигурные скобки. Вот пример объекта JSON:


«Имя»: «Дрейк»,
«Идентификатор сотрудника»: «23547a»,
«Телефон»: «23547»,
«Департамент»: «Финансы»

Объект JSON может содержать несколько данных JSON. Все данные JSON разделяются запятой. Данные JSON представлены в виде пар ключ-значение. Ключ, я.е., «Имя» и значение, i.е., «Селезень» разделяются двоеточием. В приведенном выше примере четыре пары "ключ-значение". Первый ключ - «Имя»; «Дрейк» - соответствующее значение для него. Аналогичным образом, «EmployeeID», «Телефон» и «Отдел» являются тремя другими ключами.

Массив JSON

Массив JSON может содержать несколько объектов JSON, разделенных запятыми. Массив JSON заключен в квадратную скобку. Давайте посмотрим на пример массива JSON:

"Студенты":[
"firstName": "Шон", "lastName": "Коричневый",
"firstName": "Дрейк", "lastName": "Уильямс",
"firstName": "Том", "lastName": "Миллер",
«FirstName»: «Питер», «lastName»: «Джонсон»
]

Это пример массива JSON. Здесь «Студенты» заключены в квадратные скобки, i.е., массив, и он содержит четыре объекта JSON. Каждый из этих объектов представлен в виде пар "ключ-значение" и разделен запятой.

Пример файла JSON

Теперь, когда мы разобрались с данными JSON, объектами JSON, массивом JSON, давайте посмотрим на пример файла JSON:


«FirstName»: «Шон»,
«LastName»: «Коричневый»,
«Студенческий билет»: 21453,
«Кафедра»: «Компьютерные науки».”,
«Предметы»: [«Математика», «Физика», «Химия»]

Разбор библиотек в C ++:

Нет собственного решения для разбора данных JSON в C++. Однако есть несколько библиотек для анализа данных JSON в C++. В этой статье мы рассмотрим две самые популярные библиотеки для анализа данных JSON на C++. Вот ссылки GitHub для анализа данных JSON:

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

Вы можете загрузить эти библиотеки, чтобы иметь возможность выполнять примеры, показанные ниже.

Примеры

Теперь у нас есть базовое представление о данных JSON, объектах, массивах и доступных библиотеках синтаксического анализа. Давайте теперь рассмотрим несколько примеров для анализа данных JSON в C ++:

В Примере-1 и Примере-2 мы собираемся использовать библиотеку «nlohmann». В случае Примера-3 мы будем использовать библиотеку RapidJSON.

Пример-1: синтаксический анализ JSON на C++

В этом примере программы мы продемонстрируем, как получить доступ к значениям данных JSON в C++.

#включать
#include "json.hpp "
используя json = nlohmann :: json;
int main ()

// jdEmployees
json jdEmployees =

"firstName", "Шон",
"lastName", "Коричневый",
"StudentID", 21453,
"Кафедра", "Компьютерные науки"."
;
// Доступ к значениям
std :: string fName = jdEmployees.значение ("firstName", "ой");
std :: string lName = jdEmployees.значение ("lastName", "ой");
int sID = jdEmployees.значение ("StudentID", 0);
std :: string dept = jdEmployees.значение ("Отдел", "упс");
// Распечатываем значения
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;
возврат 0;

Пример-2: синтаксический анализ и сериализация JSON в C++

В этом примере программы мы увидим, как анализировать и сериализовать JSON в C++. Мы используем «json :: parse ()» для анализа данных JSON.

#включать
#include "json.hpp "
#включать
используя json = nlohmann :: json;
int main ()

// Вот текст JSON
char text [] = R "(

"Книга":
«Ширина»: 450,
«Высота»: 30,
"Название": "Привет, мир",
"isBiography": false,
«NumOfCopies»: 4,
"LibraryIDs": [2319, 1406, 3854, 987]


) ";
// Давайте проанализируем и сериализуем JSON
json j_complete = json :: parse (текст);
std :: cout << std::setw(4) << j_complete << std::endl;

Пример-3: Разбор JSON на C++

Теперь мы продемонстрируем, как анализировать строку JSON с помощью библиотеки RapidJSON. RapidJSON изначально был вдохновлен RapidXML. В этом примере программы мы анализируем строку JSON в DOM. Мы объявили «mydoc» типа «Документ», а затем с помощью «mydoc.parse () »для анализа строки JSON.

#включать
#include "rapidjson / writer.час"
#include "rapidjson / document.час"
#include "rapidjson / stringbuffer".час"
используя пространство имен rapidjson;
int main ()

const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
«кафедра»: «Компьютерные науки»."";
// Разбираем строку JSON в DOM
Документ mydoc;
mydoc.Разбор (json);
// DOM в строку
StringBuffer buffer;
Писатель писатель (буфер);
mydoc.Принять (писатель);
// Распечатываем вывод
std :: cout << buffer.GetString() << std::endl;
возврат 0;

Заключение

В этой статье мы кратко обсудили данные, объект, массив и синтаксис JSON. Как мы знаем, в C ++ нет собственного решения для синтаксического анализа данных JSON; мы использовали две разные библиотеки для анализа данных JSON в C++. Мы рассмотрели три разных примера, чтобы продемонстрировать механизм синтаксического анализа данных JSON в C++. По сравнению с библиотекой «nlohmann» RapidJSON маленький, быстрый и удобный для памяти.

Лучшие дистрибутивы Linux для игр в 2021 году
Операционная система Linux прошла долгий путь от своего первоначального простого серверного вида. Эта ОС значительно улучшилась за последние годы и те...
Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...