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 J ava S krypto LUB obiekt n rotacja. Jak wskazuje pełna nazwa, wywodzi się z JavaScript. Jednak dane JSON są obsługiwane w większości popularnych języków programowania.
Często służy do przesyłania danych z serwera na stronę internetową. Znacznie łatwiej i czyściej jest reprezentować uporządkowane 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 jest odpowiednią wartością. Klucz, tj. Nazwa i wartość, tj. Drake, są oddzielone dwukropkiem.
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 „employee.json”. Byłby to prosty plik tekstowy. Następnie możesz otworzyć ten plik JSON w dowolnym ulubionym edytorze tekstu.
Obiekt JSON
Obiekt JSON to nic innego jak dane JSON zawarte w nawiasach klamrowych. Oto przykładowy obiekt JSON:
{Nazwa:Kaczor,
numer identyfikacyjny 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, tj. Nazwa i wartość, tj. Drake, są oddzielone dwukropkiem. W powyższym przykładzie występują cztery pary klucz-wartość. Pierwszym kluczem jest nazwa; Drake jest dla niego odpowiednią wartością. Podobnie, EmployeeID, Phone i Department to pozostałe trzy klucze.
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:
„Uczniowie”:[{'Imię':„Sean”, 'nazwisko':'Brązowy'},
{'Imię':'Kaczor', 'nazwisko':„Williams”},
{'Imię':'Tomek', 'nazwisko':'Młynarz'},
{Imię:Piotr,nazwisko:Johnson}
]
To jest przykład tablicy JSON. Tutaj Students jest ujęty w nawias kwadratowy, tj. 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,
legitymacja studencka: 21453,
dział:Komputer Sc.,
Tematy:[Matematyka,Phy,Chemia]
}
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:
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 analizujących. Przyjrzyjmy się teraz kilku przykładom 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++.
#włączać#dołącz „json.hpp”
za pomocą json=nlohmann::json;
intGłówny()
{
// jdPracownicy
json jdEmployees=
{
{'Imię',„Sean”},
{'nazwisko','Brązowy'},
{'Legitymacja studencka',21453},
{'Dział',„Komputer Sc.”}
};
// Uzyskaj dostęp do wartości
godziny::strunowyfNazwa=jdPracownicy.wartość('Imię', „ups”);
godziny::strunowylNazwa=jdPracownicy.wartość('nazwisko', „ups”);
intidentyfikator sID=jdPracownicy.wartość('Legitymacja studencka', 0);
godziny::strunowydł=jdPracownicy.wartość('Dział', „ups”);
// Wydrukuj wartości
godziny::koszt << 'Imię: ' <<fNazwa<<godziny::koniec;
godziny::koszt << 'Nazwisko: ' <<lNazwa<<godziny::koniec;
godziny::koszt << 'Legitymacja studencka: ' <<identyfikator sID<<godziny::koniec;
godziny::koszt << 'Dział: ' <<dł<<godziny::koniec;
powrót 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.
#włączać#dołącz „json.hpp”
#włączać
za pomocą json=nlohmann::json;
intGłówny()
{
// Oto tekst JSON
zwęglaćtekst[] =r'(
{
'Książka': {
'Szerokość': 450,
'Wzrost': 30,
'Tytuł':'Witaj świecie„,
'isBiografia': fałszywe,
'Liczba kopii': 4,
'Identyfikatory bibliotek': [2319, 1406, 3854, 987]
}
}
) ';
// Przeanalizujmy i zserializujmy JSON
json j_complete=json::analizować(tekst);
godziny::koszt <<godziny::setw(4) <<j_kompletne<<godziny::koniec;
}
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 Document, a następnie za pomocą metody mydoc.parse() przeanalizowaliśmy ciąg JSON.
#włączać#dołącz „rapidjson/writer.h”
#dołącz „rapidjson/document.h”
#include 'rapidjson/stringbuffer.h'
używanie przestrzeni nazw rapidjson;
intGłówny()
{
stały zwęglać*json= '{'Imię':'Sean','nazwisko':'brązowy','empId': 21453,
'dział':'Komputer Sc.'}';
// Przeanalizuj ciąg JSON w DOM
Dokument mój dokument;
mójdok.Analizować(json);
// DOM do ciągu
Bufor StringBuffer;
Pisarz<Bufor ciągów>pisarz(bufor);
mójdok.Zaakceptować(pisarz);
// Wydrukuj dane wyjściowe
godziny::koszt <<bufor.Pobierz ciąg() <<godziny::koniec;
powrót 0;
}
Wniosek
W tym artykule krótko omówiliśmy JSON dane, obiekt, tablica i składnia. 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 analizowania danych JSON w C++. W porównaniu do biblioteki nlohmann, RapidJSON jest mały, szybki i przyjazny dla pamięci.