Paano mai-parse ang JSON sa C ++

How Parse Json C



Ang layunin ng tutorial na ito ay upang maunawaan ang data ng JSON at kung paano mai-parse ang data ng JSON sa C ++. Tatalakayin namin ang data ng JSON, Object, Array, JSON syntax, at pagkatapos ay dumaan sa maraming mga gumaganang halimbawa upang maunawaan ang mekanismo ng pag-parse ng data ng JSON sa C ++.

Ano si JSON?

Si JSON ay isang representasyong nakabatay sa teksto na magaan ang timbang para sa pagtatago at paglilipat ng nakabalangkas na data sa isang organisadong paraan. Ang data ng JSON ay kinakatawan sa anyo ng mga naka-order na listahan at mga pares na key-value. Si JSON ay naninindigan J ava S cript O kaya bject N panginginig sa boses Tulad ng ipinahiwatig ng buong pangalan, nagmula ito sa JavaScript. Gayunpaman, sinusuportahan ang data ng JSON sa karamihan ng mga tanyag na wika ng programa.







Ito ay madalas na ginagamit upang ilipat ang data mula sa server sa isang web page. Mas madali at mas malinis na kumatawan sa nakabalangkas na data sa JSON kaysa sa XML.



Panuntunan ng JSON Syntax

Narito ang mga patakaran ng syntax ng JSON:



  1. Ang data ng JSON ay dapat palaging nasa anyo ng mga pares na key-halaga.
  2. Ang JSON Data ay pinaghihiwalay ng mga kuwit.
  3. Ginagamit ang isang Curly brace upang kumatawan sa JSON Object.
  4. Ginagamit ang isang square bracket upang kumatawan sa isang JSON Array.

Ano ang Data ng JSON?

Ang data ng JSON ay kinakatawan sa anyo ng mga pares ng key-value. Ito ay katulad ng isang diksyunaryo o hash sa iba pang mga wika ng programa.





Pangalan: Drake

Ito ay isang halimbawa ng simpleng data ng JSON. Ang susi dito ay Pangalan at Drake ay ang kaukulang halaga. Ang susi, ibig sabihin, Pangalan at ang halaga, ibig sabihin, si Drake ay pinaghihiwalay ng isang colon.



JSON Extension ng File

Ang data ng JSON ay karaniwang nakaimbak sa file na may extension ng .json. Halimbawa, upang maiimbak ang data ng empleyado, maaari mo lamang pangalanan ang file bilang 'empleyado.json'. Ito ay magiging isang simpleng file ng teksto. Maaari mong buksan ang JSON file na ito sa alinman sa iyong mga paboritong editor ng teksto.

JSON Bagay

Ang object ng JSON ay walang anuman kundi ang data ng JSON na nakapaloob sa loob ng mga kulot na tirante. Narito ang isang sample na object ng JSON:

{
Pangalan:Drake,
ID ng empleyado:23547a,
Telepono: 23547,
Kagawaran:Pananalapi
}

Ang isang bagay na JSON ay maaaring maglaman ng maraming data ng JSON. Ang bawat data ng JSON ay pinaghihiwalay ng isang kuwit. Ang data ng JSON ay kinakatawan bilang mga pares ng key-value. Ang susi, ibig sabihin, Pangalan at ang halaga, ibig sabihin, si Drake ay pinaghihiwalay ng isang colon. Sa halimbawa sa itaas, mayroong apat na mga pares na key-halaga. Ang unang susi ay Pangalan; Ang Drake ay ang katumbas na halaga para dito. Katulad nito, ang Empleyado, Telepono, at Kagawaran ay ang iba pang tatlong mga susi.

JSON Array

Ang isang JSON array ay maaaring maglaman ng maraming mga bagay na pinaghiwalay ng kuwit na JSON. Ang JSON array ay nakapaloob sa loob ng isang square bracket. Tingnan natin ang isang halimbawa ng isang JSON array:

'Mga Mag-aaral':[
{'pangalan':'Sean', 'huling pangalan':'Kayumanggi'},
{'pangalan':'Drake', 'huling pangalan':'Williams'},
{'pangalan':'Tom', 'huling pangalan':'Miller'},
{pangalan:Si Pedro,huling pangalan:Johnson}
]

Ito ay isang halimbawa ng isang JSON array. Dito, ang mga Mag-aaral ay nakapaloob sa isang square bracket, ibig sabihin, array, at naglalaman ito ng apat na mga object ng JSON. Ang bawat isa sa mga bagay na ito ay kinakatawan sa anyo ng mga pares na key-halaga at pinaghihiwalay ng isang kuwit.

Isang Sample na JSON File

Ngayon, dahil naintindihan namin ang data ng JSON, mga object ng JSON, JSON array, tingnan natin ang isang halimbawa ng isang JSON file:

{
pangalan:Sean,
huling pangalan:Kayumanggi,
Student ID: 21453,
Kagawaran:Ang Computer Sc.,
Mga Paksa:[Matematika,Phy,Chem]
}

Mga Parsing Library sa C ++:

Walang katutubong solusyon para sa pag-parse ng data ng JSON sa C ++. Gayunpaman, maraming mga aklatan upang mai-parse ang data ng JSON sa C ++. Sa artikulong ito, titingnan namin ang dalawang pinakatanyag na aklatan upang ma-parse ang data ng JSON sa C ++. Narito ang mga link ng GitHub para sa pag-parse ng data ng JSON:

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

Maaaring gusto mong i-download ang mga libraryong ito upang maipatupad ang mga halimbawang ipinakita sa ibaba.

Mga halimbawa

Ngayon, mayroon kaming pangunahing pag-unawa sa data ng JSON, mga object, array, at magagamit na mga library ng pag-parse. Tingnan natin ngayon ang isang pares ng mga halimbawa upang mai-parse ang data ng JSON sa C ++:

  • Halimbawa-1: Parse JSON sa C ++
  • Halimbawa-2: Parse at Serialize JSON sa C ++
  • Halimbawa-3: Parse JSON sa C ++

Para sa Halimbawa-1 at Halimbawa-2, gagamitin namin ang library ng nlohmann. Sa kaso ng Halimbawa-3, gagamitin namin ang RapidJSON library.

Halimbawa-1: Parse JSON sa C ++

Sa halimbawang programa na ito, ipapakita namin kung paano i-access ang mga halaga ng data ng JSON sa C ++.

# isama
# isama ang 'json.hpp'

gamit si json=nlohmann::json;

intpangunahing()
{

// jdEmployees
json jdMga empleyado=
{
{'pangalan','Sean'},
{'huling pangalan','Kayumanggi'},
{'StudentID',21453},
{'Kagawaran','Computer Sc.'}
};

// I-access ang mga halaga
oras::lubidfName=jdMga empleyado.halaga('pangalan', 'oops');
oras::lubidlName=jdMga empleyado.halaga('huling pangalan', 'oops');
inttumabi=jdMga empleyado.halaga('StudentID', 0);
oras::lubidDept=jdMga empleyado.halaga('Kagawaran', 'oops');

// I-print ang mga halaga
oras::gastos << 'Pangalan: ' <<fName<<oras::endl;
oras::gastos << 'Huling pangalan: ' <<lName<<oras::endl;
oras::gastos << 'Student ID:' <<tumabi<<oras::endl;
oras::gastos << 'Kagawaran:' <<Dept<<oras::endl;

bumalik ka 0;
}

Halimbawa-2: Parse at Serialize JSON sa C ++

Sa halimbawang programa na ito, makikita namin kung paano i-parse at i-serialize ang JSON sa C ++. Gumagamit kami ng json :: parse () upang ma-parse ang data ng JSON.

# isama
# isama ang 'json.hpp'
# isama

gamit si json=nlohmann::json;

intpangunahing()
{
// Narito ang isang teksto ng JSON
chartext[] =R'(
{
'
Libro': {
'
Lapad': 450,
'
Taas': 30,
'
Pamagat':'Kamusta Mundo',
'
isBiography': false,
'
Mga NumOfCopie': 4,
'
Mga LibraryID': [2319, 1406, 3854, 987]
}
}
) '
;

// Parse at serialize natin si JSON
json j_ kumpleto=json::parse(text);
oras::gastos <<oras::setw(4) <<j_ kumpleto<<oras::endl;
}

Halimbawa-3: Parse JSON sa C ++

Ngayon, ipapakita namin kung paano i-parse ang JSON string gamit ang RapidJSON library. Ang RapidJSON ay orihinal na inspirasyon ng RapidXML. Sa halimbawang programa na ito, pinag-parse namin ang isang string ng JSON sa DOM. Naideklara namin ang mydoc ng uri ng Dokumento at pagkatapos ay ginagamit ang mydoc.parse () na pamamaraan upang ma-parse ang JSON string.

# isama
# isama ang 'mabilisjson / manunulat.h'
# isama ang 'quickjson / document.h'
# isama ang 'rapidjson / stringbuffer.h'

gamit ang namespace quickjson;

intpangunahing()
{

Const char*json= '{'pangalan':'Sean','huling pangalan':'Kayumanggi','empId': 21453,
'
departamento':'Ang Computer Sc.'}';

// Parse the JSON string into DOM
Dokumento mydoc;
mydocParse(json);

// DOM sa string
StringBuffer buffer;
Manunulat<StringBuffer>manunulat(buffer);

mydocTanggapin(manunulat);

// I-print ang output
oras::gastos <<bufferGetString() <<oras::endl;

bumalik ka 0;
}

Konklusyon

Sa artikulong ito, maikling tinalakay namin Si JSON data, object, array, at syntax. Tulad ng alam natin, walang katutubong solusyon para sa pag-parse ng data ng JSON sa C ++; gumamit kami ng dalawang magkakaibang aklatan upang mai-parse ang data ng JSON sa C ++. Tiningnan namin ang tatlong magkakaibang mga halimbawa upang maipakita ang mekanismo ng pag-parse ng data ng JSON sa C ++. Kung ihahambing sa library ng nlohmann, ang RapidJSON ay maliit, mabilis, at madaling memorya.