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:
- Dane JSON powinny zawsze mieć postać par klucz-wartość.
- Dane JSON są oddzielone przecinkami.
- Nawias klamrowy jest używany do reprezentowania obiektu JSON.
- 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:
- https://github.com/nlohmann/json
- 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++:
- Przykład-1: Parsowanie JSON w C++
- Przykład-2: Parsowanie i serializacja JSON w C++
- Przykład-3: Parsowanie 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
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.