C++

C++'da JSON nasıl ayrıştırılır

C++'da JSON nasıl ayrıştırılır
Bu öğreticinin amacı, JSON verilerini ve JSON verilerinin C'de nasıl ayrıştırılacağını anlamaktır++. JSON verilerini, Nesne, Dizi, JSON sözdizimini tartışacağız ve ardından C'deki JSON verilerinin ayrıştırma mekanizmasını anlamak için birkaç çalışma örneğini gözden geçireceğiz++.

JSON nedir?

JSON, yapılandırılmış verileri düzenli bir şekilde depolamak ve aktarmak için hafif metin tabanlı bir temsildir. JSON verileri, sıralı listeler ve anahtar/değer çiftleri şeklinde temsil edilir. JSON şu anlama gelir: JavaSşifre Önesne Notasyon. Tam adından da anlaşılacağı gibi, JavaScript'ten türetilmiştir. Ancak JSON verileri, popüler programlama dillerinin çoğunda desteklenir.

Genellikle verileri sunucudan bir web sayfasına aktarmak için kullanılır. JSON'da yapılandırılmış verileri temsil etmek XML'den çok daha kolay ve temizdir.

JSON Sözdizimi Kuralı

İşte JSON sözdizimi kuralları:

  1. JSON Verileri her zaman anahtar/değer çiftleri biçiminde olmalıdır.
  2. JSON Verileri virgülle ayrılır.
  3. JSON Nesnesini temsil etmek için bir küme ayracı kullanılır.
  4. JSON Dizisini temsil etmek için köşeli parantez kullanılır.

JSON Verisi Nedir??

JSON verileri, anahtar/değer çiftleri biçiminde temsil edilir. Bu, diğer programlama dillerindeki bir sözlüğe veya karmaya benzer.

"İsim": "Drake"

Bu, basit JSON verilerine bir örnektir. Buradaki anahtar “Ad” ve “Drake” karşılık gelen değerdir. anahtar, ben.e., “Ad” ve değer, i.e., "Drake" iki nokta üst üste ile ayrılır.

JSON Dosya Uzantısı

JSON verileri normal olarak " uzantılı dosyada saklanır.json”. Örneğin, çalışanın verilerini depolamak için dosyayı basitçe 'çalışan' olarak adlandırabilirsiniz.json'. Bu basit bir metin dosyası olurdu. Daha sonra bu JSON dosyasını favori metin düzenleyicilerinizden herhangi birinde açabilirsiniz.

JSON Nesnesi

JSON nesnesi, küme parantezleri içine alınmış JSON verilerinden başka bir şey değildir. İşte örnek bir JSON nesnesi:


"İsim": "Drake",
"Çalışan Kimliği": "23547a",
“Telefon”: “23547”,
“Departman”: “Finans”

Bir JSON nesnesi birden çok JSON verisi içerebilir. Her JSON verisi virgülle ayrılır. JSON verileri, anahtar/değer çiftleri olarak temsil edilir. anahtar, ben.e., “Ad” ve değer, i.e., "Drake" iki nokta üst üste ile ayrılır. Yukarıdaki örnekte, dört anahtar/değer çifti vardır. İlk anahtar “Ad”; “Drake” buna karşılık gelen değerdir. Benzer şekilde, “Çalışan Kimliği”, “Telefon” ve “Departman” diğer üç anahtardır.

JSON Dizisi

Bir JSON dizisi, virgülle ayrılmış birkaç JSON nesnesi içerebilir. JSON dizisi köşeli parantez içine alınır. Bir JSON dizisi örneğine bakalım:

"Öğrenciler":[
"ad":"Sean", "soyad":"Kahverengi",
"ad":"Drake", "soyadı":"Williams",
"ad":"Tom", "soyadı":"Miller",
"ad":"Peter", "soyad": "Johnson"
]

Bu bir JSON dizisi örneğidir. Burada “Öğrenciler” köşeli parantez içine alınmıştır, i.e., dizi ve dört JSON nesnesi içeriyor. Bu nesnelerin her biri, anahtar/değer çiftleri şeklinde temsil edilir ve virgülle ayrılır.

Örnek JSON Dosyası

Şimdi JSON verilerini, JSON nesnelerini, JSON dizisini anladığımıza göre, bir JSON dosyası örneğine bakalım:


“ad”: “Sean”,
"soyad": "Kahverengi",
"Öğrenci Kimliği": 21453,
“Bölüm”: “Bilgisayar Sc.”,
“Konular”:[“Matematik”, “Fizik”, “Kimya”]

C++'da Kitaplıkları Ayrıştırma:

JSON verilerini C'de ayrıştırmak için yerel bir çözüm yok++. Ancak, C'de JSON verilerini ayrıştırmak için birkaç kitaplık vardır++. Bu yazıda, JSON verilerini C'de ayrıştırmak için en popüler iki kütüphaneyi inceleyeceğiz++. JSON verilerini ayrıştırmak için GitHub bağlantıları:

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

Aşağıda gösterilen örnekleri çalıştırabilmek için bu kütüphaneleri indirmek isteyebilirsiniz.

Örnekler

Artık JSON verileri, nesneler, diziler ve kullanılabilir ayrıştırma kitaplıkları hakkında temel bilgilere sahibiz. Şimdi JSON verilerini C++'da ayrıştırmak için birkaç örneğe bakalım:

Örnek-1 ve Örnek-2 için “nlohmann” kütüphanesinden faydalanacağız. Örnek-3 durumunda, “RapidJSON” kütüphanesini kullanacağız.

Örnek-1: JSON'u C'de ayrıştırın++

Bu örnek programda, C'deki JSON verilerinin değerlerine nasıl erişileceğini göstereceğiz++.

#Dahil etmek
#include "json.hp"
json = nlohmann::json kullanarak;
int ana()

// jdÇalışanlar
json jdÇalışanlar =

"firstName","Sean",
"lastName","Kahverengi",
"ÖğrenciKimliği",21453,
"Bölüm","Bilgisayar Sc."
;
// Değerlere erişin
std::string fAd = jdÇalışanlar.value("firstName", "ayy");
std::string lName = jdÇalışanlar.değer("soyad", "ayy");
int sID = jdÇalışanlar.değer("ÖğrenciKimliği", 0);
std::string bölümü = jdÇalışanlar.değer("Bölüm", "ayy");
// Değerleri yazdır
standart::cout << "First Name: " << fName << std::endl;
standart::cout << "Last Name: " << lName << std::endl;
standart::cout << "Student ID: " << sID << std::endl;
standart::cout << "Department: " << dept << std::endl;
0 döndür;

Örnek-2: JSON'u C'de Ayrıştırma ve Serileştirme++

Bu örnek programda, C'de JSON'un nasıl ayrıştırılıp seri hale getirileceğini göreceğiz++. JSON verilerini ayrıştırmak için “json::parse()” kullanıyoruz.

#Dahil etmek
#include "json.hpp"
#Dahil etmek
json = nlohmann::json kullanarak;
int ana()

// İşte bir JSON metni
karakter metni[] = R"(

"Kitap":
"Genişlik": 450,
"Yükseklik": 30,
"Başlık": "Merhaba Dünya",
"isBiography": yanlış,
"Kopya Sayısı": 4,
"Kütüphane Kimlikleri": [2319, 1406, 3854, 987]


)";
// JSON'u ayrıştırıp seri hale getirelim
json j_complete = json::parse(metin);
standart::cout << std::setw(4) << j_complete << std::endl;

Örnek-3: JSON'u C'de ayrıştırın++

Şimdi, RapidJSON kitaplığını kullanarak JSON dizesinin nasıl ayrıştırılacağını göstereceğiz. RapidJSON, orijinal olarak RapidXML'den esinlenmiştir. Bu örnek programda, bir JSON dizesini DOM'a ayrıştırıyoruz. “Document” türünde “mydoc” ilan ettik ve ardından “mydoc”u kullandık.JSON dizesini ayrıştırmak için parse()” yöntemi.

#Dahil etmek
#include "rapidjson/yazar.h"
#include "rapidjson/belge.h"
#include "rapidjson/stringbuffer.h"
ad alanı rapidjson kullanarak;
int ana()

const char* json = ""firstName":"Sean","lastName":"Brown","empId":21453,
"departman":"Bilgisayar Sc."";
// JSON dizesini DOM'a ayrıştırın
Belge mydoc;
belgem.Ayrıştırma(json);
// DOM'den dizeye
StringBuffer arabelleği;
yazar yazar(tampon);
belgem.Kabul et(yazar);
// Çıktıyı yazdır
standart::cout << buffer.GetString() << std::endl;
0 döndür;

Sonuç

Bu yazıda JSON verilerini, nesnesini, dizisini ve sözdizimini kısaca tartıştık. Bildiğimiz gibi, C++'da JSON verilerinin ayrıştırılması için yerel bir çözüm yoktur; JSON verilerini C'de ayrıştırmak için iki farklı kitaplık kullandık++. C'deki JSON veri ayrıştırma mekanizmasını göstermek için üç farklı örneğe baktık++. "nlohmann" kitaplığına kıyasla, RapidJSON küçük, hızlı ve hafıza dostudur.

OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...
SuperTuxKart for Linux
SuperTuxKart is a great title designed to bring you the Mario Kart experience free of charge on your Linux system. It is pretty challenging and fun to...
Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...