Cara menguraikan JSON dalam C ++

How Parse Json C



Tujuan tutorial ini adalah untuk memahami data JSON dan bagaimana menguraikan data JSON di C ++. Kami akan membincangkan data JSON, Objek, Array, sintaks JSON, dan kemudian melalui beberapa contoh kerja untuk memahami mekanisme penghuraian data JSON di C ++.

Apa itu JSON?

JSON adalah representasi berasaskan teks ringan untuk menyimpan dan memindahkan data berstruktur secara teratur. Data JSON diwakili dalam bentuk senarai teratur dan pasangan nilai-kunci. JSON bermaksud J ava S cript ATAU bawak N otasi. Seperti yang ditunjukkan oleh nama penuh, ia berasal dari JavaScript. Walau bagaimanapun, data JSON disokong dalam kebanyakan bahasa pengaturcaraan yang popular.







Ia sering digunakan untuk memindahkan data dari pelayan ke laman web. Jauh lebih mudah dan bersih untuk mewakili data berstruktur dalam JSON daripada XML.



Peraturan Sintaksis JSON

Berikut adalah peraturan sintaks JSON:



  1. Data JSON harus selalu dalam bentuk pasangan nilai-kunci.
  2. Data JSON dipisahkan dengan koma.
  3. Pendakap Keriting digunakan untuk mewakili Objek JSON.
  4. Kurungan persegi digunakan untuk mewakili Array JSON.

Apakah Data JSON?

Data JSON diwakili dalam bentuk pasangan nilai-kunci. Ini serupa dengan kamus atau hash dalam bahasa pengaturcaraan lain.





Nama: Drake

Ini adalah contoh data JSON ringkas. Kuncinya di sini ialah Nama dan Drake adalah nilai yang sepadan. Kunci, iaitu, Nama dan nilai, iaitu Drake dipisahkan oleh titik dua.



Sambungan Fail JSON

Data JSON biasanya disimpan dalam fail dengan peluasan .json. Contohnya, untuk menyimpan data pekerja, anda boleh menamakan fail tersebut sebagai ‘karyawan.json’. Ini akan menjadi fail teks ringkas. Anda kemudian boleh membuka fail JSON ini di mana-mana penyunting teks kegemaran anda.

Objek JSON

Objek JSON tidak lain adalah data JSON yang dilampirkan dalam pendakap keriting. Berikut adalah contoh objek JSON:

{
Nama:Drake,
ID pekerja:23547a,
Telefon: 23547,
Jabatan:Kewangan
}

Objek JSON boleh mengandungi banyak data JSON. Setiap data JSON dipisahkan dengan koma. Data JSON diwakili sebagai pasangan nilai-kunci. Kunci, iaitu, Nama dan nilai, iaitu Drake dipisahkan oleh titik dua. Dalam contoh di atas, terdapat empat pasangan nilai-kunci. Kunci pertama ialah Nama; Drake adalah nilai yang sesuai dengannya. Begitu juga, EmployeeID, Phone, dan Department adalah tiga kunci lain.

Susunan JSON

Susunan JSON boleh mengandungi beberapa objek JSON yang dipisahkan koma. Susunan JSON dilampirkan dalam kurungan persegi. Mari kita lihat contoh array JSON:

'Pelajar':[
{'nama pertama':'Sean', 'nama terakhir':'Coklat'},
{'nama pertama':'Drake', 'nama terakhir':'Williams'},
{'nama pertama':'Tom', 'nama terakhir':'Miller'},
{nama pertama:Peter,nama terakhir:Johnson}
]

Ini adalah contoh array JSON. Di sini, Pelajar ditutup dengan tanda kurung persegi, iaitu array, dan mengandungi empat objek JSON. Setiap objek ini diwakili dalam bentuk pasangan nilai-kunci dan dipisahkan dengan koma.

Contoh Fail JSON

Sekarang, kerana kami memahami data JSON, objek JSON, array JSON, mari kita lihat contoh fail JSON:

{
nama pertama:Sean,
nama terakhir:Coklat,
ID pelajar: 21453,
Jabatan:Komputer Sc.,
Mata pelajaran:[Matematik,Phy,Chem]
}

Menghuraikan Perpustakaan dalam C ++:

Tidak ada penyelesaian asli untuk menguraikan data JSON di C ++. Walau bagaimanapun, terdapat beberapa perpustakaan untuk menguraikan data JSON di C ++. Dalam artikel ini, kita akan melihat dua perpustakaan paling popular untuk menguraikan data JSON di C ++. Berikut adalah pautan GitHub untuk menguraikan data JSON:

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

Anda mungkin mahu memuat turun perpustakaan ini untuk dapat melaksanakan contoh yang ditunjukkan di bawah.

Contoh

Sekarang, kita mempunyai pemahaman asas mengenai data, objek, tatasusunan, dan perpustakaan penghuraian JSON. Sekarang mari kita lihat beberapa contoh untuk menguraikan data JSON di C ++:

  • Contoh-1: Huraikan JSON dalam C ++
  • Contoh-2: Parse dan Serialize JSON dalam C ++
  • Contoh-3: Huraikan JSON dalam C ++

Untuk Contoh-1 dan Contoh-2, kita akan memanfaatkan perpustakaan nlohmann. Dalam kes Contoh-3, kami akan menggunakan perpustakaan RapidJSON.

Contoh-1: Huraikan JSON dalam C ++

Dalam program contoh ini, kami akan menunjukkan cara mengakses nilai data JSON di C ++.

#sertakan
#sertakan 'json.hpp'

menggunakan json=nlohmann::json;

intutama()
{

// jd Pekerja
json jdPekerja=
{
{'nama pertama','Sean'},
{'nama terakhir','Coklat'},
{'ID pelajar',21453},
{'Jabatan','Komputer Sc.'}
};

// Akses nilai
Jam::talifNama=jdPekerja.nilai('nama pertama', 'Alamak');
Jam::talilNama=jdPekerja.nilai('nama terakhir', 'Alamak');
intSID=jdPekerja.nilai('ID pelajar', 0);
Jam::talijabatan=jdPekerja.nilai('Jabatan', 'Alamak');

// Cetak nilai
Jam::kos << 'Nama pertama: ' <<fNama<<Jam::endl;
Jam::kos << 'Nama terakhir: ' <<lNama<<Jam::endl;
Jam::kos << 'ID pelajar: ' <<SID<<Jam::endl;
Jam::kos << 'Jabatan:' <<jabatan<<Jam::endl;

kembali 0;
}

Contoh-2: Parse dan Serialize JSON dalam C ++

Dalam program contoh ini, kita akan melihat bagaimana menguraikan dan membuat siri JSON di C ++. Kami menggunakan json :: parse () untuk menguraikan data JSON.

#sertakan
#sertakan 'json.hpp'
#sertakan

menggunakan json=nlohmann::json;

intutama()
{
// Berikut adalah teks JSON
charteks[] =R'(
{
'
Tempah': {
'
Lebar': 450,
'
Ketinggian': 30,
'
Tajuk':'Hai dunia',
'
isBiografi': salah,
'
NumOfCopies': 4,
'
ID Perpustakaan': [2319, 1406, 3854, 987]
}
}
) '
;

// Mari kita uraikan dan bersiri JSON
json j_complete=json::menghurai(teks);
Jam::kos <<Jam::setw(4) <<j_lengkapkan<<Jam::endl;
}

Contoh-3: Huraikan JSON dalam C ++

Sekarang, kami akan menunjukkan cara menguraikan rentetan JSON menggunakan perpustakaan RapidJSON. RapidJSON pada mulanya diilhamkan oleh RapidXML. Dalam program contoh ini, kami menguraikan rentetan JSON ke DOM. Kami telah menyatakan mydoc jenis Dokumen dan kemudian menggunakan kaedah mydoc.parse () untuk menguraikan rentetan JSON.

#sertakan
#sertakan 'fastjson / writer.h'
#sertakan 'fastjson / document.h'
#sertakan 'fastjson / stringbuffer.h'

menggunakan namespace rapidjson;

intutama()
{

penyambung char*json= '' {nama pertama':'Sean','nama terakhir':'Coklat','empId': 21453,
'
jabatan':'Komputer Sc.'}';

// Urutkan rentetan JSON ke DOM
Dokumen mydoc;
mydoc.Hurai(json);

// DOM ke rentetan
Penyangga StringBuffer;
Penulis<StringBuffer>penulis(penyangga);

mydoc.Terima(penulis);

// Cetak output
Jam::kos <<penyangga.GetString() <<Jam::endl;

kembali 0;
}

Kesimpulannya

Dalam artikel ini, kami telah membincangkan secara ringkas JSON data, objek, tatasusunan, dan sintaks. Seperti yang kita ketahui, tidak ada penyelesaian asli untuk penguraian data JSON di C ++; kami telah menggunakan dua perpustakaan yang berbeza untuk menguraikan data JSON di C ++. Kami melihat tiga contoh yang berbeza untuk menunjukkan mekanisme penghuraian data JSON di C ++. Berbanding dengan perpustakaan nlohmann, RapidJSON kecil, cepat, dan mesra memori.