C++

Jak parsować JSON w C++

Jak parsować JSON w C++
Intencją tego samouczka jest zrozumienie danych JSON i sposobu analizowania danych JSON w C++. Omówimy dane JSON, obiekt, tablicę, składnię JSON, a następnie przejdziemy przez kilka działających przykładów, aby zrozumieć mechanizm parsowania danych JSON w C++.

Co to jest JSON?

JSON to lekka reprezentacja tekstowa do przechowywania i przesyłania uporządkowanych danych w zorganizowany sposób. Dane JSON są reprezentowane w postaci uporządkowanych list i par klucz-wartość. JSON oznacza jotavaSkrypto Oobiekt Notacja. Jak wskazuje pełna nazwa, wywodzi się 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ą. Znacznie łatwiej i czyściej jest reprezentować ustrukturyzowane dane w formacie JSON niż XML.

Reguła składni JSON

Oto zasady składni JSON:

  1. Dane JSON powinny zawsze mieć postać par klucz-wartość.
  2. Dane JSON są oddzielone przecinkami.
  3. Nawias klamrowy jest używany do reprezentowania obiektu JSON.
  4. Nawias kwadratowy służy do reprezentowania tablicy JSON.

Co to są dane JSON?

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

„Imię” : „Drake”

To jest przykład prostych danych JSON. Kluczem tutaj jest „Nazwa”, a „Drake” to odpowiadająca jej wartość. Klucz, ja.mi., „Nazwa” i wartość, i.mi., „Drake” są oddzielone dwukropkiem.

Rozszerzenie pliku JSON

Dane JSON są zwykle przechowywane w pliku z rozszerzeniem „.json”. Na przykład, aby przechowywać dane pracownika, wystarczy nazwać plik „pracownik”.json. To byłby prosty plik tekstowy. Następnie możesz otworzyć ten plik JSON w dowolnym swoim ulubionym edytorze tekstu.

Obiekt JSON

Obiekt JSON to nic innego jak dane JSON zawarte w nawiasach klamrowych. Oto przykładowy obiekt JSON:


„Imię”: „Drake”,
„Identyfikator pracownika”: „23547a”,
„Telefon”: „23547”,
„Dział”: „Finanse”

Obiekt JSON może zawierać wiele danych JSON. Każde dane JSON są oddzielone przecinkiem. Dane JSON są reprezentowane jako pary klucz-wartość. Klucz, ja.mi., „Nazwa” i wartość, i.mi., „Drake” są oddzielone dwukropkiem. W powyższym przykładzie występują cztery pary klucz-wartość. Pierwszym kluczem jest „Nazwa”; „Drake” to odpowiednia dla niego wartość. Podobnie „Identyfikator pracownika”, „Telefon” i „Dział” to pozostałe trzy klawisze.

Tablica JSON

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

"Studenci":[
"firstName":"Sean", "lastName":"Brązowy",
"firstName":"Drake", "lastName":"Williams",
"firstName":"Tomek", "lastName":"Miller",
„imię”:”Piotr”, „nazwisko”: „Johnson”
]

To jest przykład tablicy JSON. Tutaj słowo „Studenci” jest ujęte w nawias kwadratowy, i.mi., tablica i zawiera cztery obiekty JSON. Każdy z tych obiektów jest reprezentowany w postaci par klucz-wartość i jest oddzielony przecinkiem.

Przykładowy plik JSON

Teraz, ponieważ zrozumieliśmy dane JSON, obiekty JSON, tablicę JSON, spójrzmy na przykład pliku JSON:


„imię”: „Sean”,
„nazwisko”: „Brązowy”,
„Identyfikator ucznia”: 21453,
„Dział”: „Komputer Sc.”,
„Tematy”:[„Matematyka”, „Fizyka”, „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óm najpopularniejszym bibliotekom do analizowania danych JSON w C++. Oto linki GitHub do analizowania danych JSON:

  1. https://github.com/nlohmann/json
  2. https://github.com/Tentent/rapidjson/

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

Przykłady

Teraz mamy podstawową wiedzę na temat danych JSON, obiektów, tablic i dostępnych bibliotek do analizowania par. Spójrzmy teraz na kilka przykładów analizowania danych JSON w C++:

W przypadku Przykładu-1 i Przykładu-2 użyjemy biblioteki „nlohmann”. W przypadku Przykładu 3 użyjemy biblioteki „RapidJSON”.

Przykład-1: Parsowanie JSON w C++

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

#zawierać
#włącz „json.HPP"
używając json = nlohmann::json;
int main()

// jdPracownicy
json jdPracownicy =

"imię","Sean",
"nazwisko","Brązowy",
"Identyfikator ucznia", 21453,
"Departament","Komputer Sc."
;
// Uzyskaj dostęp do wartości
std::string fName = jdEmployees.value("imię", "ups");
std::string lName = jdEmployees.value("nazwisko", "ups");
int sID = jdPracownicy.wartość("Identyfikator Studenta", 0);
std::string dept = jdPracownicy.value("Dział", "ups");
// 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;
zwróć 0;

Przykład-2: Parsowanie i serializacja JSON w C++

W tym przykładowym programie zobaczymy, jak parsować i serializować JSON w C++. Używamy „json::parse()” do analizowania danych JSON.

#zawierać
#włącz „json.HPP"
#zawierać
używając json = nlohmann::json;
int main()

// Oto tekst JSON
tekst znaku[] = R"(

"Książka":
"Szerokość": 450,
„Wysokość”: 30,
„Tytuł”: „Witaj świecie”,
„isBiografia”: fałsz,
„Liczba kopii”: 4,
„Identyfikatory bibliotek”: [2319, 1406, 3854, 987]


)";
// Przeanalizujmy i zserializujmy JSON
json j_complete = json::parse(tekst);
std::cout << std::setw(4) << j_complete << std::endl;

Przykład-3: Parsowanie JSON w C++

Teraz zademonstrujemy, jak parsować ciąg JSON za pomocą biblioteki RapidJSON. RapidJSON został pierwotnie zainspirowany RapidXML. W tym przykładowym programie przetwarzamy ciąg JSON w DOM. Zadeklarowaliśmy „mydoc” typu „Dokument”, a następnie za pomocą „mydoc.parse()” metoda parsowania ciągu JSON.

#zawierać
#include „rapidjson/writer.h"
#include "rapidjson/dokument".h"
#include „rapidjson/stringbuffer.h"
używanie przestrzeni nazw rapidjson;
int main()

const char* json = ""firstName":"Sean","lastName":"Brown","empId":21453,
"department":"Komputer Sc."";
// Przeanalizuj ciąg JSON w DOM
dokument dokument;
mójdok.Parsuj(json);
// DOM do ciągu
Bufor StringBuffer;
Pisarz pisarz(bufor);
mójdok.Zaakceptuj (pisarz);
// Wydrukuj wynik
std::cout << buffer.GetString() << std::endl;
zwróć 0;

Wniosek

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

Gry Najlepsze gry do grania ze śledzeniem rąk
Najlepsze gry do grania ze śledzeniem rąk
Oculus Quest niedawno wprowadził świetny pomysł śledzenia rąk bez kontrolerów. Przy stale rosnącej liczbie gier i działań, które wspierają zarówno for...
Gry Jak wyświetlić nakładkę OSD w pełnoekranowych aplikacjach i grach dla systemu Linux?
Jak wyświetlić nakładkę OSD w pełnoekranowych aplikacjach i grach dla systemu Linux?
Granie w gry pełnoekranowe lub korzystanie z aplikacji w trybie pełnoekranowym bez rozpraszania uwagi może odciąć Cię od istotnych informacji systemow...
Gry 5 najlepszych kart do przechwytywania gier
5 najlepszych kart do przechwytywania gier
Wszyscy widzieliśmy i uwielbialiśmy strumieniowe rozgrywki na YouTube on. PewDiePie, Jakesepticye i Markiplier to tylko niektórzy z najlepszych graczy...