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

How Parse Json C



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

Какво е JSON?

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







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



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

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



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

Какво е JSON Data?

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





Име: Дрейк

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



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

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

JSON обект

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

{
Име:Дрейк,
Идентификационен номер на служител:23547a,
Телефон: 23547,
Отдел:Финанси
}

JSON обект може да съдържа множество JSON данни. Всички JSON данни са разделени със запетая. JSON данните се представят като двойки ключ-стойност. Името и стойността, т.е. Drake са разделени с двоеточие. В горния пример има четири двойки ключ-стойност. Първият ключ е Име; Дрейк е съответната стойност за него. По същия начин EmployeeID, Phone и Department са другите три ключа.

JSON масив

JSON масив може да съдържа няколко JSON обекта, разделени със запетая. Масивът JSON е затворен в квадратна скоба. Нека разгледаме пример за JSON масив:

'Студенти':[
{'първо име':'Шон', 'фамилия':'Кафяво'},
{'първо име':'Дрейк', 'фамилия':'Уилямс'},
{'първо име':'Том', 'фамилия':'Милър'},
{първо име:Петър,фамилия:Джонсън}
]

Това е пример за JSON масив. Тук Students е заграден с квадратна скоба, т.е. масив, и съдържа четири JSON обекта. Всеки от тези обекти е представен под формата на двойки ключ-стойност и е разделен със запетая.

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

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

{
първо име:Шон,
фамилия:Кафяво,
Студентски документ: 21453,
Отдел:Компютърно Sc.,
Предмети:[Математика,Фи,Химия]
}

Разбор на библиотеки в 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: Анализирайте JSON в C ++
  • Пример-2: Анализирайте и сериализирайте JSON в C ++
  • Пример-3: Анализирайте JSON в C ++

За Пример-1 и Пример-2 ще използваме библиотеката nlohmann. В случая с Пример-3 ще използваме библиотеката RapidJSON.

Пример-1: Анализирайте JSON в C ++

В тази примерна програма ще покажем как да получите достъп до стойности на JSON данни в C ++.

#включва
#include 'json.hpp'

използвайки json=nlohmann::json;

intглавен()
{

// jdEmployees
json jdEmployees=
{
{'първо име','Шон'},
{'фамилия','Кафяво'},
{'StudentID',21453},
{'Отдел',„Компютърно изследване“.}
};

// Достъп до стойностите
часа::низfName=jdРаботници.стойност('първо име', 'упс');
часа::низl Име=jdРаботници.стойност('фамилия', 'упс');
intsID=jdРаботници.стойност('StudentID', 0);
часа::низдълбочина=jdРаботници.стойност('Отдел', 'упс');

// Отпечатайте стойностите
часа::цена << 'Първо име: ' <<fName<<часа::endl;
часа::цена << 'Фамилия: ' <<l Име<<часа::endl;
часа::цена << „Студентски идентификатор:“ <<sID<<часа::endl;
часа::цена << „Отдел:“ <<дълбочина<<часа::endl;

връщане 0;
}

Пример-2: Анализирайте и сериализирайте JSON в C ++

В тази примерна програма ще видим как да анализираме и сериализираме JSON в C ++. Използваме json :: parse () за анализиране на JSON данните.

#включва
#include 'json.hpp'
#включва

използвайки json=nlohmann::json;

intглавен()
{
// Ето JSON текст
charтекст[] =R'(
{
'
Книга': {
'
Ширина': 450,
'
Височина': 30,
'
Заглавие':'Здравей свят',
'
е Биография': false,
'
NumOfCopies': 4,
'
LibraryIDs': [2319, 1406, 3854, 987]
}
}
) '
;

// Нека анализираме и сериализираме JSON
json j_complete=json::разбор(текст);
часа::цена <<часа::setw(4) <<j_complete<<часа::endl;
}

Пример-3: Анализирайте JSON в C ++

Сега ще покажем как да анализираме JSON низ, използвайки библиотеката RapidJSON. RapidJSON първоначално е вдъхновен от RapidXML. В тази примерна програма анализираме JSON низ в DOM. Декларирахме mydoc от тип Document и след това използваме метода mydoc.parse () за анализиране на JSON низ.

#включва
#include 'rapidjson/writer.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'

използвайки пространството на имената rapidjson;

intглавен()
{

const char*json= '{'първо име':'Шон','фамилия':'Кафяво','empId': 21453,
'
отдел':'Компютърно Sc.'}';

// Анализираме JSON низ в DOM
Документирайте mydoc;
mydoc.Разбор(json);

// DOM към низ
StringBuffer буфер;
Писател<StringBuffer>писател(буфер);

mydoc.Приемам(писател);

// Отпечатайте изхода
часа::цена <<буфер.GetString() <<часа::endl;

връщане 0;
}

Заключение

В тази статия накратко обсъдихме JSON данни, обект, масив и синтаксис. Както знаем, няма естествено решение за JSON анализ на данни в C ++; използвахме две различни библиотеки за анализиране на JSON данни в C ++. Разгледахме три различни примера, за да демонстрираме механизма за анализ на JSON данни в C ++. В сравнение с библиотеката nlohmann, RapidJSON е малък, бърз и удобен за паметта.