Ц ++

Како рашчланити ЈСОН у Ц ++

Како рашчланити ЈСОН у Ц ++
Намера овог упутства је да разуме ЈСОН податке и како да рашчлани ЈСОН податке у Ц++. Разговараћемо о ЈСОН подацима, Објецт, Арраи, ЈСОН синтакси, а затим ћемо проћи кроз неколико радних примера да бисмо разумели механизам рашчлањивања ЈСОН података у Ц++.

Шта је ЈСОН?

ЈСОН је лагана презентација заснована на тексту за организовано чување и пренос структурираних података. ЈСОН подаци су представљени у облику уређених листа и парова кључ / вредност. ЈСОН је скраћеница за ЈаваСкрипт Објецт Нотација. Као што пуни назив указује, изведен је из ЈаваСцрипт-а. Међутим, ЈСОН подаци су подржани у већини популарних програмских језика.

Често се користи за пренос података са сервера на веб страницу. Много је лакше и чистије приказати структуриране податке у ЈСОН-у него КСМЛ-у.

ЈСОН правило синтаксе

Ево правила синтаксе ЈСОН:

  1. ЈСОН подаци увек треба да буду у облику парова кључ / вредност.
  2. ЈСОН подаци су одвојени зарезима.
  3. Коврчава заграда се користи за представљање ЈСОН објекта.
  4. Углата заграда користи се за представљање ЈСОН низа.

Шта су ЈСОН подаци?

ЈСОН подаци су представљени у облику парова кључ / вредност. Ово је слично речнику или хешу у другим програмским језицима.

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

Ово је пример једноставних ЈСОН података. Овде је кључ „Име“, а „Драке“ је одговарајућа вредност. Кључ, тј.е., „Име“ и вредност, тј.е., „Драке“ су одвојени двотачком.

ЈСОН екстензија датотеке

ЈСОН подаци се обично чувају у датотеци са наставком „.јсон ”. На пример, да бисте сачували податке о запосленом, датотеку можете једноставно именовати као „запослени“.јсон '. Ово би била једноставна текстуална датотека. Затим ову ЈСОН датотеку можете отворити у било којем од својих омиљених уређивача текста.

ЈСОН објект

ЈСОН објекат није ништа друго него ЈСОН подаци затворени у коврџаве заграде. Ево примера ЈСОН објекта:


„Име“: „Драке“,
„ИД запосленог“: „23547а“,
„Телефон“: „23547“,
„Одељење“: „Финансије“

ЈСОН објекат може садржати више ЈСОН података. Сваки ЈСОН податак одвојен је зарезом. ЈСОН подаци су представљени као парови кључ / вредност. Кључ, тј.е., „Име“ и вредност, тј.е., „Драке“ су одвојени двотачком. У горњем примеру постоје четири пара кључ / вредност. Први тастер је „Име“; „Драке“ је одговарајућа вредност за њега. Слично томе, „ЕмплоиееИД“, „Пхоне“ и „Департмент“ су остала три кључа.

ЈСОН Арраи

ЈСОН низ може садржати неколико ЈСОН објеката одвојених зарезом. ЈСОН низ је затворен у угласту заграду. Погледајмо пример ЈСОН низа:

"Студенти":[
"фирстНаме": "Сеан", "ластНаме": "Бровн",
"фирстНаме": "Драке", "ластНаме": "Виллиамс",
"фирстНаме": "Том", "ластНаме": "Миллер",
„ФирстНаме“: „Петер“, „ластНаме“: „Јохнсон“
]

Ово је пример ЈСОН низа. Овде је „Студенти“ затворени угластом заградом, тј.е., низ и садржи четири ЈСОН објекта. Сваки од ових објеката представљен је у облику парова кључ / вредност и одвојен је зарезом.

Пример ЈСОН датотеке

Сада, пошто смо разумели ЈСОН податке, ЈСОН објекте, ЈСОН низ, погледајмо пример ЈСОН датотеке:


„ФирстНаме“: „Сеан“,
„ЛастНаме“: „Браон“,
„Студент ИД“: 21453,
„Одељење“: „Цомпутер Сц.”,
„Предмети“: [„Математика“, „Фи“, „Хем“]

Рашчлањивање библиотека у Ц ++:

Не постоји изворно решење за рашчлањивање ЈСОН података у Ц++. Међутим, постоји неколико библиотека за рашчлањивање ЈСОН података у језику Ц++. У овом чланку ћемо погледати две најпопуларније библиотеке за рашчлањивање ЈСОН података у језику Ц++. Ево ГитХуб веза за рашчлањивање ЈСОН података:

  1. хттпс: // гитхуб.цом / нлохманн / јсон
  2. хттпс: // гитхуб.цом / Тенцент / рапидјсон /

Можда ћете желети да преузмете ове библиотеке да бисте могли извршити примере приказане у наставку.

Примери

Сада имамо основно разумевање ЈСОН података, објеката, низова и доступних библиотека за рашчлањивање. Погледајмо сада неколико примера за рашчлањивање ЈСОН података у Ц ++:

За Пример-1 и Пример-2 користићемо библиотеку „нлохманн“. У случају Примера-3 користићемо библиотеку „РапидЈСОН“.

Пример-1: Анализирати ЈСОН у Ц++

У овом примеру програма показаћемо како приступити вредностима ЈСОН података у језику Ц++.

#инцлуде
#инцлуде "јсон.хпп "
помоћу јсон = нлохманн :: јсон;
инт маин ()

// јдЕффициеес
јсон јдЕ Емплоиеес =

"фирстНаме", "Сеан",
"ластНаме", "Бровн",
"СтудентИД", 21453,
"Департман", "Цомпутер Сц."
;
// Приступ вредностима
стд :: стринг фНаме = јдЕ Емплоиеес.вредност ("фирстНаме", "упс");
стд :: стринг лНаме = јдЕееееееееес.вредност ("ластНаме", "упс");
инт сИД = јдЗапосленици.вредност ("СтудентИД", 0);
стд :: стринг депт = јдЕ Емплоиеес.вредност („Одељење“, „упс“);
// Штампање вредности
стд :: цоут << "First Name: " << fName << std::endl;
стд :: цоут << "Last Name: " << lName << std::endl;
стд :: цоут << "Student ID: " << sID << std::endl;
стд :: цоут << "Department: " << dept << std::endl;
ретурн 0;

Пример-2: Анализирајте и сериализујте ЈСОН у Ц++

У овом примеру програма видећемо како да рашчланимо и сериализујемо ЈСОН у Ц++. Користимо „јсон :: парсе ()“ за рашчлањивање ЈСОН података.

#инцлуде
#инцлуде "јсон.хпп "
#инцлуде
помоћу јсон = нлохманн :: јсон;
инт маин ()

// Ево ЈСОН текста
цхар текст [] = Р "(

„Књига“:
„Ширина“: 450,
„Висина“: 30,
„Наслов“: „Здраво, свет“,
"исБиограпхи": нетачно,
„НумОфЦопиес“: 4,
„ЛибрариИДс“: [2319, 1406, 3854, 987]


) ";
// Анализирајмо и сериализујмо ЈСОН
јсон ј_цомплете = јсон :: парсе (текст);
стд :: цоут << std::setw(4) << j_complete << std::endl;

Пример-3: Анализирати ЈСОН у Ц++

Сада ћемо показати како рашчланити ЈСОН низ помоћу библиотеке РапидЈСОН. РапидЈСОН је првобитно инспирисан РапидКСМЛ-ом. У овом примеру програма рашчлањујемо ЈСОН низ у ДОМ. Прогласили смо „мидоц“ типа „Доцумент“ и затим користили „мидоц.метода парсе () ”за рашчлањивање ЈСОН низа.

#инцлуде
#инцлуде "рапидјсон / вритер.х "
#инцлуде "рапидјсон / доцумент.х "
#инцлуде "рапидјсон / стрингбуффер.х "
коришћење простора имена рапидјсон;
инт маин ()

цонст цхар * јсон = "" фирстНаме ":" Сеан "," ластНаме ":" Бровн "," емпИд ": 21453,
"департмент": "Цомпутер Сц."";
// Анализирајте ЈСОН низ у ДОМ
Доцумент мидоц;
мидоц.Парсе (јсон);
// ДОМ у низ
СтрингБуффер бафер;
Писац писац (бафер);
мидоц.Прихватити (писац);
// Испис резултата
стд :: цоут << buffer.GetString() << std::endl;
ретурн 0;

Закључак

У овом чланку смо укратко разговарали о ЈСОН подацима, објекту, низу и синтакси. Као што знамо, у Ц ++ не постоји изворно решење за ЈСОН рашчлањивање података; користили смо две различите библиотеке за рашчлањивање ЈСОН података у језику Ц++. Размотрили смо три различита примера како бисмо демонстрирали ЈСОН механизам рашчлањивања података у језику Ц++. У поређењу са „нлохманн“ библиотеком, РапидЈСОН је мали, брз и прилагођен меморији.

Како користити Ксдотоол за подстицање кликова мишем и притиска тастера у Линуку
Ксдотоол је бесплатан алат за командну линију отвореног кода за симулацију кликова мишем и притиска тастера. Овај чланак ће покрити кратак водич о кор...
Топ 5 ергономских производа за рачунарски миш за Линук
Да ли дуготрајна употреба рачунара изазива бол у зглобу или прстима? Патите ли од укочених зглобова и стално морате да се рукујете? Да ли осећате гору...
Како променити поставке миша и додирне табле помоћу Ксинпут-а у Линук-у
Већина Линук дистрибуција подразумевано испоручује библиотеку „либинпут“ за обраду улазних догађаја на систему. Може да обрађује улазне догађаје и на ...