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

How Parse Json C



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

Шта је ЈСОН?

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







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



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

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



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

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

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





Име: Драке

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



ЈСОН проширење датотеке

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

ЈСОН Објецт

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

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

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

ЈСОН Арраи

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

'Студенти':[
{'име':'Сеан', 'презиме':'Смеђа'},
{'име':'Драке', 'презиме':'Вилијамс'},
{'име':'Том', 'презиме':'Миллер'},
{име:Петер,презиме:Јохнсон}
]

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

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

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

{
име:Сеан,
презиме:Бровн,
Студентска карта: 21453,
Одељење:Цомпутер Сц.,
Субјецтс:[Матх,Пхи,Цхем]
}

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

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

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

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

Примери

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

  • Пример-1: Рашчланите ЈСОН у Ц ++
  • Пример-2: Рашчланите и серијализујте ЈСОН у Ц ++
  • Пример-3: Рашчланите ЈСОН у Ц ++

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

Пример-1: Рашчланите ЈСОН у Ц ++

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

#инцлуде
#инцлуде 'јсон.хпп'

користећи јсон=нлохманн::јсон;

интглавни()
{

// јдЕмплоиеес
јсон јдЗапослени=
{
{'име','Сеан'},
{'презиме','Смеђа'},
{'СтудентИД',21453},
{'Одељење','Цомпутер Сц.'}
};

// Приступите вредностима
сати::низфНаме=јдЕмплоиеес.вредност('име', 'оопс');
сати::низлНаме=јдЕмплоиеес.вредност('презиме', 'оопс');
интсИД=јдЕмплоиеес.вредност('СтудентИД', 0);
сати::низдепт=јдЕмплоиеес.вредност('Одељење', 'оопс');

// Одштампајте вредности
сати::цена << 'Име: ' <<фНаме<<сати::ендл;
сати::цена << 'Презиме: ' <<лНаме<<сати::ендл;
сати::цена << 'Студентски ИД:' <<сИД<<сати::ендл;
сати::цена << 'Одељење:' <<депт<<сати::ендл;

повратак 0;
}

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

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

#инцлуде
#инцлуде 'јсон.хпп'
#инцлуде

користећи јсон=нлохманн::јсон;

интглавни()
{
// Ево ЈСОН текста
цхартекст[] =Р'(
{
'
Боок': {
'
Видтх': 450,
'
Висина': 30,
'
Титле':'Здраво Свете',
'
исБиографија': фалсе,
'
НумОфЦопиес': 4,
'
ЛибрариИДс': [2319, 1406, 3854, 987]
}
}
) '
;

// Хајде да рашчланимо и серијализујемо ЈСОН
јсон ј_цомплете=јсон::рашчланити(текст);
сати::цена <<сати::сетв(4) <<ј_цомплете<<сати::ендл;
}

Пример-3: Рашчланите ЈСОН у Ц ++

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

#инцлуде
#инцлуде 'рапидјсон/вритер.х'
#инцлуде 'рапидјсон/доцумент.х'
#инцлуде 'рапидјсон/стрингбуффер.х'

користећи простор имена рапидјсон;

интглавни()
{

цонст цхар*јсон= '{'име':'Сеан','презиме':'Бровн','емпИд': 21453,
'
одељење':'Цомпутер Сц.'}';

// Рашчланите ЈСОН низ у ДОМ
Документ мидоц;
мидоц.Парсе(јсон);

// ДОМ у низ
СтрингБуффер бафер;
Писац<СтрингБуффер>писац(тампон);

мидоц.Прихвати(писац);

// Штампа излаз
сати::цена <<тампон.ГетСтринг() <<сати::ендл;

повратак 0;
}

Закључак

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