C ++

Как да анализираме JSON в C ++

Как да анализираме JSON в C ++
Целта на този урок е да разбере JSON данните и как да анализира JSON данните в C++. Ще обсъдим JSON данни, Object, Array, JSON синтаксис и след това ще преминем през няколко работни примера, за да разберем механизма за синтактичен анализ на JSON данните в C++.

Какво е JSON?

JSON е леко текстово представяне за организирано съхраняване и прехвърляне на структурирани данни. JSON данните са представени под формата на подредени списъци и двойки ключ-стойност. JSON означава JavaСкрипт Оbject нотация. Както показва пълното име, то е получено от JavaScript. Данните JSON обаче се поддържат в повечето от популярните езици за програмиране.

Често се използва за прехвърляне на данните от сървъра към уеб страница. Много по-лесно и по-лесно е да се представят структурираните данни в JSON, отколкото XML.

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

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

  1. JSON данните винаги трябва да бъдат под формата на двойки ключ-стойност.
  2. JSON данните са разделени със запетаи.
  3. За представяне на JSON обект се използва къдрава скоба.
  4. Квадратна скоба се използва за представяне на JSON масив.

Какво представляват JSON данните?

JSON данните са представени под формата на двойки ключ-стойност. Това е подобно на речник или хеш в други езици за програмиране.

„Име“: „Дрейк“

Това е пример за прости JSON данни. Ключът тук е „Име“, а „Дрейк“ е съответната стойност. Ключът, т.е.д., „Име“ и стойността, т.е.д., „Дрейк“ са разделени с двоеточие.

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

JSON данните обикновено се съхраняват във файла с разширението „.json ”. Например, за да съхраните данните на служителя, можете просто да назовете файла като „служител“.json '. Това би бил обикновен текстов файл. След това можете да отворите този JSON файл във всеки от любимите си текстови редактори.

JSON обект

Обектът JSON не е нищо друго освен данните JSON, затворени в къдравите скоби. Ето примерен JSON обект:


“Име”: “Дрейк”,
„Идентификационен номер на служител“: „23547a“,
„Телефон“: „23547“,
„Департамент“: „Финанси“

JSON обектът може да съдържа множество JSON данни. Всяка JSON информация се отделя със запетая. JSON данните се представят като двойки ключ-стойност. Ключът, т.е.д., „Име“ и стойността, т.е.д., „Дрейк“ са разделени с двоеточие. В горния пример има четири двойки ключ-стойност. Първият ключ е „Име“; „Drake“ е съответната стойност за него. По същия начин „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 масив. Тук „Студенти“ е заграден с квадратна скоба, т.е.д., масив и съдържа четири JSON обекта. Всеки от тези обекти е представен под формата на двойки ключ-стойност и е разделен със запетая.

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

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


“FirstName”: „Шон”,
“LastName”: „Кафяв”,
„Студентска книжка“: 21453,
„Катедра“: „Компютърна sc.”,
„Субекти“: [„Математика“, „Phy“, „Chem“]

Разбор на библиотеки в 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
#include "json.hpp "
използвайки json = nlohmann :: json;
int main ()

// jdEfficiees
json jdEfficiees =

"firstName", "Sean",
"lastName", "Brown",
"StudentID", 21453,
"Катедра", "Компютърна Sc."
;
// Достъп до стойностите
std :: string fName = jdEfficiees.стойност ("firstName", "oops");
std :: string lName = jdEfficiees.стойност ("lastName", "oops");
int sID = jdEeeeeews.стойност ("StudentID", 0);
std :: string dept = jdEfficiees.стойност ("Отдел", "упс");
// Отпечатваме стойностите
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
#include "json.hpp "
#include
използвайки json = nlohmann :: json;
int main ()

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

"Книга":
"Ширина": 450,
"Височина": 30,
"Заглавие": "Здравей, свят",
"isBiography": невярно,
"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“ от тип „Document“ и след това използвахме „mydoc.parse () ”метод за анализиране на JSON низ.

#include
#include "rapidjson / писател.ч "
#include "rapidjson / документ.ч "
#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 данни, обект, масив и синтаксис. Както знаем, няма собствено решение за JSON анализ на данни в C ++; използвахме две различни библиотеки за синтактичен анализ на JSON данни в C++. Разгледахме три различни примера, за да демонстрираме механизма за синтактичен анализ на JSON в C++. В сравнение с библиотеката “nlohmann”, RapidJSON е малък, бърз и удобен за паметта.

Топ Oculus App Lab Games
Ако сте собственик на слушалки на Oculus, тогава трябва да знаете за странично зареждане. Sideloading е процесът на инсталиране на несъхранявано съдър...
Топ 10 игри за игра на Ubuntu
Платформата на Windows е една от доминиращите платформи за игри поради огромния процент игри, които се развиват днес, за да поддържат Windows. Може ли...
5 най-добри аркадни игри за Linux
В днешно време компютрите са сериозни машини, използвани за игри. Ако не можете да получите новия висок резултат, ще разберете какво имам предвид. В т...