C ++

Як проаналізувати JSON в C ++

Як проаналізувати JSON в C ++
Метою цього посібника є розуміння даних JSON та способи аналізу даних JSON у C++. Ми обговоримо синтаксис даних JSON, Object, Array, JSON, а потім пройдемо кілька робочих прикладів, щоб зрозуміти механізм синтаксичного аналізу даних JSON у C++.

Що таке JSON?

JSON - це полегшене текстове подання для організованого зберігання та передачі структурованих даних. Дані JSON представлені у вигляді упорядкованих списків та пар ключ-значення. JSON означає JavaSкрипт Оbject Nотація. Як вказує повна назва, воно походить від JavaScript. Однак дані JSON підтримуються у більшості популярних мов програмування.

Він часто використовується для передачі даних із сервера на веб-сторінку. Набагато простіше і зрозуміліше представляти структуровані дані у форматі JSON, ніж XML.

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

Ось правила синтаксису JSON:

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

Що таке JSON Data?

Дані JSON представлені у формі пар ключ-значення. Це схоже на словник або хеш в інших мовах програмування.

“Ім'я”: “Дрейк”

Це приклад простих даних JSON. Ключ тут - "Ім'я", а "Дрейк" - це відповідне значення. Ключ, тобто.e., “Ім'я” та значення, тобто.e., «Дрейк» розділені двокрапкою.

Розширення файлу JSON

Дані JSON зазвичай зберігаються у файлі з розширенням “.json ". Наприклад, щоб зберегти дані працівника, ви можете просто назвати файл «співробітник».json '. Це буде простий текстовий файл. Потім ви можете відкрити цей файл JSON у будь-якому з ваших улюблених текстових редакторів.

Об'єкт JSON

Об'єкт JSON - це не що інше, як дані JSON, укладені в фігурні дужки. Ось зразок об’єкта JSON:


“Ім'я”: “Дрейк”,
“Ідентифікатор працівника”: “23547a”,
“Телефон”: “23547”,
“Департамент”: “Фінанси”

Об'єкт JSON може містити кілька даних JSON. Кожні дані JSON відокремлюються комою. Дані JSON представлені у вигляді пар ключ-значення. Ключ, тобто.e., "Ім'я" та значення, тобто.e., «Дрейк» розділені двокрапкою. У наведеному вище прикладі є чотири пари ключ-значення. Перший ключ - "Ім'я"; "Дрейк" - це відповідне значення для нього. Аналогічним чином, “EmployeeID”, “Phone” та “Department” - це інші три ключі.

Масив JSON

Масив JSON може містити кілька об’єктів JSON, розділених комами. Масив JSON укладений у квадратну дужку. Давайте розглянемо приклад масиву JSON:

"Студенти": [
"firstName": "Sean", "lastName": "Brown",
"firstName": "Drake", "lastName": "Williams",
"firstName": "Tom", "lastName": "Miller",
“FirstName”: “Peter”, “lastName”: “Johnson”
]

Це приклад масиву JSON. Тут "Студенти" укладено квадратною дужкою, тобто.e., масив, і він містить чотири об'єкти 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 ()

// jdЕксперти
json jdEfficiees =

"firstName", "Sean",
"lastName", "Brown",
"StudentID", 21453,
"Кафедра", "Комп."
;
// Доступ до значень
std :: string fName = jdEeeeeeews.значення ("firstName", "oops");
std :: string lName = jdEeeeeeews.значення ("прізвище", "ой");
int sID = jdСпівробітники.значення ("StudentID", 0);
std :: string dept = jdEeeeeeeees.значення ("Відділ", "ой");
// Друк значень
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
текст символу [] = R "(

"Книга":
"Ширина": 450,
"Висота": 30,
"Назва": "Привіт Світ",
"isBiography": хибне,
"NumOfCopies": 4,
"Бібліотечні ідентифікатори": [2319, 1406, 3854, 987]


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

Приклад-3: Проаналізуйте JSON у C++

Тепер ми продемонструємо, як проаналізувати рядок JSON за допомогою бібліотеки RapidJSON. RapidJSON спочатку був натхненний RapidXML. У цьому прикладі програми ми аналізуємо рядок JSON у DOM. Ми оголосили "mydoc" типу "Document", а потім використовуємо "mydoc.метод синтаксичного аналізу () ”для синтаксичного аналізу рядка 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;
Письменник письменник (буфер);
mydoc.Прийняти (письменник);
// Роздрукувати вихідні дані
std :: cout << buffer.GetString() << std::endl;
повернути 0;

Висновок

У цій статті ми коротко обговорили дані, об’єкт, масив та синтаксис JSON. Як ми знаємо, в C ++ не існує власного рішення для аналізу даних JSON; ми використовували дві різні бібліотеки для синтаксичного аналізу даних JSON у C++. Ми розглянули три різні приклади, щоб продемонструвати механізм аналізу даних JSON у C++. У порівнянні з бібліотекою “nlohmann”, RapidJSON невеликий, швидкий та зручний для пам’яті.

SuperTuxKart for Linux
SuperTuxKart is a great title designed to bring you the Mario Kart experience free of charge on your Linux system. It is pretty challenging and fun to...
Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...