Какво е JSON?
JSON е леко текстово представяне за организирано съхраняване и прехвърляне на структурирани данни. JSON данните са представени под формата на подредени списъци и двойки ключ-стойност. JSON означава JavaСкрипт Оbject нотация. Както показва пълното име, то е получено от JavaScript. Данните JSON обаче се поддържат в повечето от популярните езици за програмиране.
Често се използва за прехвърляне на данните от сървъра към уеб страница. Много по-лесно и по-лесно е да се представят структурираните данни в JSON, отколкото XML.
Правило за синтаксис на JSON
Ето правилата за синтаксис на JSON:
- JSON данните винаги трябва да бъдат под формата на двойки ключ-стойност.
- JSON данните са разделени със запетаи.
- За представяне на JSON обект се използва къдрава скоба.
- Квадратна скоба се използва за представяне на 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 данни:
- https: // github.com / nlohmann / json
- https: // github.com / Tencent / rapidjson /
Може да искате да изтеглите тези библиотеки, за да можете да изпълните примерите, показани по-долу.
Примери
Сега имаме основно разбиране за JSON данни, обекти, масиви и налични библиотеки за синтактичен анализ. Нека сега разгледаме няколко примера за анализ на JSON данни в C ++:
- Пример-1: Анализирайте JSON в C++
- Пример-2: Анализирайте и сериализирайте JSON в C++
- Пример-3: Анализирайте 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 е малък, бърз и удобен за паметта.