Jak przeanalizować JSON w C ++

Jak przeanalizować JSON w C ++
Intencją tego samouczka jest zrozumienie danych JSON i sposób parsowania danych JSON w C++. Omówimy dane JSON, obiekt, tablicę, składnię JSON, a następnie przejdziemy przez kilka roboczych przykładów, aby zrozumieć mechanizm analizy danych JSON w C++.

Co to jest JSON?

JSON to lekka reprezentacja tekstowa do przechowywania i przesyłania strukturalnych danych w zorganizowany sposób. Dane JSON są reprezentowane w formie uporządkowanych list i par kluczowych. JSON oznacza JAvaSCRIPT OBject NOtation. Jak wskazuje pełna nazwa, pochodzi z JavaScript. Jednak dane JSON są obsługiwane w większości popularnych języków programowania.

Jest często używany do przesyłania danych z serwera na stronę internetową. O wiele łatwiejsze i czystsze do przedstawienia strukturalnych danych w JSON niż XML.

Reguła składni JSON

Oto reguły składni JSON:

  1. Dane JSON powinny zawsze znajdować się w postaci par kluczowych.
  2. Dane JSON są oddzielone przez przecinki.
  3. Do reprezentowania obiektu JSON używany jest kręcone klamry.
  4. Kwadratowy wspornik służy do reprezentowania tablicy JSON.

Co to są dane JSON?

Dane JSON są reprezentowane w postaci par kluczowych. Jest to podobne do słownika lub skrótu w innych językach programowania.

„Nazwa”: „Drake”

To jest przykład prostych danych JSON. Kluczem tutaj jest „nazwa”, a „Drake” to odpowiednia wartość. Klucz, ja.mi., „Nazwa” i wartość, ja.mi., „Drake” są oddzielone okrężnicy.

Rozszerzenie pliku JSON

Dane JSON są zwykle przechowywane w pliku z rozszerzeniem „.JSON ”. Na przykład, aby przechowywać dane pracownika, możesz po prostu nazwać plik jako „pracownik.JSON '. To byłby prosty plik tekstowy. Następnie możesz otworzyć ten plik JSON w dowolnym z twoich ulubionych edytorów tekstu.

Obiekt JSON

Obiekt JSON to tylko dane JSON zamknięte w kręconych aparatach ortodontycznych. Oto przykładowy obiekt JSON:


„Nazwa”: „Drake”,
„Identyfikator pracownika”: „23547a”,
„Telefon”: „23547”,
„Departament”: „Finanse”

Obiekt JSON może zawierać wiele danych JSON. Każde dane JSON są oddzielone przecinkiem. Dane JSON są reprezentowane jako pary wartości kluczowej. Klucz, ja.mi., „Nazwa” i wartość, ja.mi., „Drake” są oddzielone okrężnicy. W powyższym przykładzie istnieją cztery pary wartości kluczy. Pierwszym kluczem jest „nazwa”; „Drake” jest dla niego odpowiednią wartością. Podobnie „EmployeEID”, „Phone” i „Department” to pozostałe trzy klucze.

JSON Array

Tablica JSON może zawierać kilka obiektów JSON oddzielonych przecinkami. Tablica JSON jest zamknięta w kwadratowym przedziale. Spójrzmy na przykład tablicy JSON:

„Uczniowie”: [
„FirstName”: „Sean”, „LastName”: „Brown”,
„FirstName”: „Drake”, „LastName”: „Williams”,
„FirstName”: „Tom”, „LastName”: „Miller”,
„FirstName”: „Peter”, „LastName”: „Johnson”
]

To jest przykład tablicy JSON. Tutaj „studenci” są zamknięte w kwadratowym wsporniku, ja.mi., tablica i zawiera cztery obiekty JSON. Każdy z tych obiektów jest reprezentowany w postaci par kluczowych i jest oddzielony przecinkiem.

Przykładowy plik JSON

Teraz, odkąd zrozumieliśmy dane JSON, obiekty JSON, JSON Array, spójrzmy na przykład pliku JSON:


„FirstName”: „Sean”,
„LastName”: „Brown”,
„Identyfikator studenta”: 21453,
„Departament”: „Computer SC.",
„Tematy”: [„Math”, „Phy”, „Chem”]

Parsowanie bibliotek w C ++:

Nie ma natywnego rozwiązania do analizowania danych JSON w C++. Istnieje jednak kilka bibliotek do analizowania danych JSON w C++. W tym artykule przyjrzymy się dwóch najpopularniejszych bibliotek, aby analizować dane JSON w C++. Oto linki GitHub do analizowania danych JSON:

  1. https: // github.com/nlohmann/json
  2. https: // github.com/tencent/rapidJson/

Możesz pobrać te biblioteki, aby móc wykonać przykłady pokazane poniżej.

Przykłady

Teraz mamy podstawowe zrozumienie danych JSON, obiektów, tablic i dostępnych bibliotek parsowania. Spójrzmy teraz na kilka przykładów, aby przeanalizować dane JSON w C ++:

  • Przykład-1: Parse Json w C++
  • Przykład-2: Parse i serializuj JSON w C++
  • Przykład-3: Parse Json w C++

Na przykład-1 i przykład-2, skorzystamy z biblioteki „NLOHMANN”. W przypadku przykładu 3 użyjemy biblioteki „RapidJson”.

Przykład-1: Parse Json w C++

W tym przykładowym programie pokażemy, jak uzyskać dostęp do wartości danych JSON w C++.

#włączać
#include "JSON.HPP "
używając JSON = nlohmann :: JSON;
int main ()

// Jdemployes
JSON JDEMPLOTYES =
„FirstName”, „Sean”,
„LastName”, „Brown”,
„StudentId”, 21453,
„Department”, „Computer SC.";
// Dostęp do wartości
std :: String fname = jdemployees.wartość („FirstName”, „OOPS”);
std :: String lname = jdemployees.wartość („LastName”, „OOPS”);
int sid = jdemployees.wartość („StudentId”, 0);
std :: String Dept = jdemployees.wartość („dział”, „oops”);
// Wydrukuj wartości
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;
powrót 0;

Przykład-2: Parse i serializuj JSON w C++

W tym przykładowym programie zobaczymy, jak przeanalizować i serializować JSON w C++. Używamy „JSON :: parse ()”, aby przeanalizować dane JSON.

#włączać
#include "JSON.HPP "
#włączać
używając JSON = nlohmann :: JSON;
int main ()

// Oto tekst JSON
Char Text [] = r ”(

"Książka":
„Szerokość”: 450,
„Wysokość”: 30,
„Tytuł”: „Hello World”,
„Isbiografia”: Fałsz,
„Numofcopies”: 4,
„LibraryIds”: [2319, 1406, 3854, 987]


) ”;
// Parse i serializujmy JSON
JSON J_COMPLETE = JSON :: parse (tekst);
STD :: Cout << std::setw(4) << j_complete << std::endl;

Przykład-3: Parse Json w C++

Teraz zademonstrujemy, jak przeanalizować ciąg JSON za pomocą biblioteki RapidJson. RapidJson był pierwotnie zainspirowany przez RapidxML. W tym przykładowym programie analizujemy ciąg JSON w DOM. Oświadczyliśmy „MyDoc” typu „Dokument”, a następnie używając „myDoc.metoda parse () ”do analizowania ciągu JSON.

#włączać
#include "RapidJson/pisarz.H"
#include "RapidJson/Document.H"
#Include "RapidJson/StringBuffer.H"
używając przestrzeni nazw RapidJson;
int main ()

const char* json = „„ FirstName ”:„ Sean ”,„ LastName ”:„ Brown ”,„ Empid ”: 21453,
„dział”: „komputer SC.„”;
// Przejdź ciąg JSON w DOM
Dokumentuj mydoc;
mydoc.Parse (JSON);
// DOM do ciągu
Bufor Buffer;
Pisarz pisarz (bufor);
mydoc.Zaakceptuj (pisarz);
// Wydrukuj wyjście
STD :: Cout << buffer.GetString() << std::endl;
powrót 0;

Wniosek

W tym artykule krótko omówiliśmy dane JSON, obiekt, tablicę i składnię. Jak wiemy, nie ma natywnego rozwiązania parsowania danych JSON w C ++; Użyliśmy dwóch różnych bibliotek do analizowania danych JSON w C++. Przejrzeliśmy się do trzech różnych przykładów, aby zademonstrować mechanizm parsowania danych JSON w C++. W porównaniu do biblioteki „Nlohmann”, RapidJson jest mały, szybki i przyjazny pamięci.