C ++ లో JSON ని ఎలా అన్వయించాలి

How Parse Json C



ఈ ట్యుటోరియల్ యొక్క ఉద్దేశ్యం JSON డేటా మరియు C ++ లో JSON డేటాను ఎలా అన్వయించాలో అర్థం చేసుకోవడం. మేము JSON డేటా, ఆబ్జెక్ట్, అర్రే, JSON సింటాక్స్ గురించి చర్చిస్తాము, ఆపై C ++ లో JSON డేటా యొక్క పార్సింగ్ మెకానిజమ్‌ను అర్థం చేసుకోవడానికి అనేక పని ఉదాహరణల ద్వారా వెళ్తాము.

JSON అంటే ఏమిటి?

JSON వ్యవస్థీకృత మార్గంలో నిర్మాణాత్మక డేటాను నిల్వ చేయడానికి మరియు బదిలీ చేయడానికి తేలికపాటి టెక్స్ట్ ఆధారిత ప్రాతినిధ్యం. JSON డేటా ఆర్డర్ చేయబడిన జాబితాలు మరియు కీ-విలువ జతల రూపంలో సూచించబడుతుంది. JSON అంటే జె అవ ఎస్ క్రిప్ట్ లేదా వస్తువు ఎన్ ఒటేషన్ పూర్తి పేరు సూచించినట్లుగా, ఇది జావాస్క్రిప్ట్ నుండి తీసుకోబడింది. అయితే, JSON డేటా అత్యంత ప్రాచుర్యం పొందిన ప్రోగ్రామింగ్ భాషలలో మద్దతు ఇస్తుంది.







సర్వర్ నుండి డేటాను వెబ్ పేజీకి బదిలీ చేయడానికి ఇది తరచుగా ఉపయోగించబడుతుంది. XML కంటే JSON లో నిర్మాణాత్మక డేటాను సూచించడం చాలా సులభం మరియు క్లీనర్.



JSON వాక్యనిర్మాణ నియమం

JSON వాక్యనిర్మాణ నియమాలు ఇక్కడ ఉన్నాయి:



  1. JSON డేటా ఎల్లప్పుడూ కీ-వాల్యూ పెయిర్‌ల రూపంలో ఉండాలి.
  2. JSON డేటా కామాలతో వేరు చేయబడింది.
  3. JSON ఆబ్జెక్ట్‌ను సూచించడానికి కర్లీ బ్రేస్ ఉపయోగించబడుతుంది.
  4. JSON శ్రేణిని సూచించడానికి చదరపు బ్రాకెట్ ఉపయోగించబడుతుంది.

JSON డేటా అంటే ఏమిటి?

JSON డేటా కీ-విలువ జతల రూపంలో సూచించబడుతుంది. ఇది ఇతర ప్రోగ్రామింగ్ భాషలలో నిఘంటువు లేదా హాష్‌ని పోలి ఉంటుంది.





పేరు: డ్రేక్

ఇది సాధారణ JSON డేటాకు ఉదాహరణ. ఇక్కడ కీ పేరు మరియు డ్రేక్ సంబంధిత విలువ. కీ, అనగా, పేరు మరియు విలువ, అనగా, డ్రేక్ పెద్దప్రేగు ద్వారా వేరు చేయబడుతుంది.



JSON ఫైల్ పొడిగింపు

JSON డేటా సాధారణంగా .json పొడిగింపుతో ఫైల్‌లో నిల్వ చేయబడుతుంది. ఉదాహరణకు, ఉద్యోగి డేటాను నిల్వ చేయడానికి, మీరు ఫైల్‌కి 'ఎంప్లాయి.జెసన్' అని పేరు పెట్టవచ్చు. ఇది సాధారణ టెక్స్ట్ ఫైల్. మీరు ఈ JSON ఫైల్‌ను మీకు ఇష్టమైన టెక్స్ట్ ఎడిటర్‌లలో తెరవవచ్చు.

JSON వస్తువు

JSON ఆబ్జెక్ట్ అనేది గిరజాల బ్రేస్‌లలో పొందుపరిచిన JSON డేటా తప్ప మరొకటి కాదు. ఇక్కడ ఒక నమూనా JSON వస్తువు ఉంది:

{
పేరు:డ్రేక్,
ఉద్యోగ గుర్తింపు:23547 ఎ,
ఫోన్: 23547,
శాఖ:ఫైనాన్స్
}

ఒక JSON వస్తువు బహుళ JSON డేటాను కలిగి ఉంటుంది. ప్రతి JSON డేటా కామాతో వేరు చేయబడుతుంది. JSON డేటా కీ-విలువ జతలుగా సూచించబడుతుంది. కీ, అనగా, పేరు మరియు విలువ, అనగా, డ్రేక్ పెద్దప్రేగు ద్వారా వేరు చేయబడుతుంది. పై ఉదాహరణలో, నాలుగు కీ-విలువ జతలు ఉన్నాయి. మొదటి కీ పేరు; డ్రేక్ దీనికి సంబంధిత విలువ. అదేవిధంగా, ఎంప్లాయీఐడి, ఫోన్ మరియు డిపార్ట్‌మెంట్ ఇతర మూడు కీలు.

JSON అరే

ఒక JSON శ్రేణి అనేక కామాతో వేరు చేయబడిన JSON వస్తువులను కలిగి ఉంటుంది. JSON శ్రేణి ఒక చదరపు బ్రాకెట్‌లో జతచేయబడింది. JSON శ్రేణి యొక్క ఉదాహరణను చూద్దాం:

'విద్యార్థులు':[
{'మొదటి పేరు':'సీన్', 'చివరి పేరు':'బ్రౌన్'},
{'మొదటి పేరు':'డ్రేక్', 'చివరి పేరు':'విలియమ్స్'},
{'మొదటి పేరు':'టామ్', 'చివరి పేరు':'మిల్లర్'},
{మొదటి పేరు:పీటర్,చివరి పేరు:జాన్సన్}
]

ఇది JSON శ్రేణికి ఉదాహరణ. ఇక్కడ, విద్యార్థులు చదరపు బ్రాకెట్‌తో జతచేయబడ్డారు, అనగా శ్రేణి, మరియు ఇందులో నాలుగు JSON వస్తువులు ఉన్నాయి. ఈ వస్తువులలో ప్రతి ఒక్కటి కీ-విలువ జతల రూపంలో సూచించబడతాయి మరియు కామాతో వేరు చేయబడతాయి.

ఒక నమూనా JSON ఫైల్

ఇప్పుడు, మేము JSON డేటా, JSON వస్తువులు, JSON శ్రేణిని అర్థం చేసుకున్నందున, JSON ఫైల్ యొక్క ఉదాహరణను చూద్దాం:

{
మొదటి పేరు:సీన్,
చివరి పేరు:బ్రౌన్,
విద్యార్థి ID: 21453,
శాఖ:కంప్యూటర్ SC.,
సబ్జెక్టులు:[గణితం,ఫై,కెమ్]
}

C ++ లో పార్సింగ్ లైబ్రరీలు:

C ++ లో JSON డేటాను అన్వయించడానికి స్థానిక పరిష్కారం లేదు. అయితే, C ++ లో JSON డేటాను అన్వయించడానికి అనేక లైబ్రరీలు ఉన్నాయి. ఈ వ్యాసంలో, C ++ లో JSON డేటాను అన్వయించడానికి మేము రెండు అత్యంత ప్రజాదరణ పొందిన లైబ్రరీలను చూడబోతున్నాము. JSON డేటాను అన్వయించడానికి GitHub లింక్‌లు ఇక్కడ ఉన్నాయి:

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

దిగువ చూపిన ఉదాహరణలను అమలు చేయడానికి మీరు ఈ లైబ్రరీలను డౌన్‌లోడ్ చేయాలనుకోవచ్చు.

ఉదాహరణలు

ఇప్పుడు, మాకు JSON డేటా, వస్తువులు, శ్రేణులు మరియు అందుబాటులో ఉన్న పార్సింగ్ లైబ్రరీల గురించి ప్రాథమిక అవగాహన ఉంది. ఇప్పుడు C ++ లో JSON డేటాను అన్వయించడానికి కొన్ని ఉదాహరణలను చూద్దాం:

  • ఉదాహరణ -1: C ++ లో JSON ని అన్వయించండి
  • ఉదాహరణ -2: C ++ లో JSON ని అన్వయించండి మరియు సీరియల్ చేయండి
  • ఉదాహరణ -3: C ++ లో JSON ని అన్వయించండి

ఉదాహరణ -1 మరియు ఉదాహరణ -2 కొరకు, మేము nlohmann లైబ్రరీని ఉపయోగించబోతున్నాము. ఉదాహరణ -3 విషయంలో, మేము RapidJSON లైబ్రరీని ఉపయోగిస్తాము.

ఉదాహరణ -1: C ++ లో JSON ని అన్వయించండి

ఈ ఉదాహరణ ప్రోగ్రామ్‌లో, C ++ లో JSON డేటా విలువలను ఎలా యాక్సెస్ చేయాలో మేము ప్రదర్శిస్తాము.

#చేర్చండి
#'json.hpp' ని చేర్చండి

json ఉపయోగించి=nlohmann::json;

intప్రధాన()
{

// jd ఉద్యోగులు
json jd ఉద్యోగులు=
{
{'మొదటి పేరు','సీన్'},
{'చివరి పేరు','బ్రౌన్'},
{'StudentID',21453},
{'విభాగం','కంప్యూటర్ ఎస్సీ.'}
};

// విలువలను యాక్సెస్ చేయండి
గంటలు::స్ట్రింగ్పేరు=jd ఉద్యోగులు.విలువ('మొదటి పేరు', 'అయ్యో');
గంటలు::స్ట్రింగ్పేరు=jd ఉద్యోగులు.విలువ('చివరి పేరు', 'అయ్యో');
intsID=jd ఉద్యోగులు.విలువ('StudentID', 0);
గంటలు::స్ట్రింగ్డిపార్ట్మెంట్=jd ఉద్యోగులు.విలువ('విభాగం', 'అయ్యో');

// విలువలను ముద్రించండి
గంటలు::ఖరీదు << 'మొదటి పేరు: ' <<పేరు<<గంటలు::endl;
గంటలు::ఖరీదు << 'చివరి పేరు: ' <<పేరు<<గంటలు::endl;
గంటలు::ఖరీదు << 'విద్యార్థి ID:' <<sID<<గంటలు::endl;
గంటలు::ఖరీదు << 'విభాగం:' <<డిపార్ట్మెంట్<<గంటలు::endl;

తిరిగి 0;
}

ఉదాహరణ -2: C ++ లో JSON ని అన్వయించండి మరియు సీరియల్ చేయండి

ఈ ఉదాహరణ ప్రోగ్రామ్‌లో, మేము C ++ లో JSON ని ఎలా అన్వయించాలో మరియు సీరియల్ చేయాలో చూడబోతున్నాము. JSON డేటాను అన్వయించడానికి మేము json :: parse () ని ఉపయోగిస్తున్నాము.

#చేర్చండి
#'json.hpp' ని చేర్చండి
#చేర్చండి

json ఉపయోగించి=nlohmann::json;

intప్రధాన()
{
// ఇక్కడ ఒక JSON టెక్స్ట్ ఉంది
చార్టెక్స్ట్[] =ఆర్'(
{
'
పుస్తకం': {
'
వెడల్పు': 450,
'
ఎత్తు': 30,
'
శీర్షిక':'హలో వరల్డ్',
'
జీవిత చరిత్ర': తప్పుడు,
'
NumOf కాపీలు': 4,
'
లైబ్రరీ ID లు': [2319, 1406, 3854, 987]
}
}
) '
;

// JSON ని అన్వయించి సీరియల్ చేద్దాం
json j_complete=json::అన్వయించు(టెక్స్ట్);
గంటలు::ఖరీదు <<గంటలు::సెట్యు(4) <<j_పూర్తి<<గంటలు::endl;
}

ఉదాహరణ -3: C ++ లో JSON ని అన్వయించండి

ఇప్పుడు, RapidJSON లైబ్రరీని ఉపయోగించి JSON స్ట్రింగ్‌ను ఎలా అన్వయించాలో మేము ప్రదర్శిస్తాము. RapidJSON వాస్తవానికి RapidXML ద్వారా ప్రేరణ పొందింది. ఈ ఉదాహరణ ప్రోగ్రామ్‌లో, మేము JSON స్ట్రింగ్‌ను DOM లోకి అన్వయిస్తున్నాము. మేము టైప్ డాక్యుమెంట్ యొక్క మైడాక్‌ను డిక్లేర్ చేసాము మరియు తరువాత JSON స్ట్రింగ్‌ను పార్స్ చేయడానికి mydoc.parse () పద్ధతిని ఉపయోగిస్తాము.

#చేర్చండి
#'ర్యాపిడ్‌జాన్/రైటర్. హెచ్' చేర్చండి
#'ర్యాపిడ్‌జాన్/డాక్యుమెంట్.హెచ్' చేర్చండి
#'ర్యాపిడ్‌జోసన్/స్ట్రింగ్‌బఫర్.హెచ్' చేర్చండి

నేమ్‌స్పేస్ ర్యాపిడ్‌జోన్ ఉపయోగించి;

intప్రధాన()
{

కానిస్టేట్ చార్*json= '{'మొదటి పేరు':'సీన్','చివరి పేరు':'బ్రౌన్','ఎంపిఐడి': 21453,
'
శాఖ':'కంప్యూటర్ SC.'}';

// JSON స్ట్రింగ్‌ను DOM లోకి అన్వయించండి
డాక్యుమెంట్ mydoc;
mydoc.పార్స్(json);

// స్ట్రింగ్‌కు DOM
స్ట్రింగ్ బఫర్ బఫర్;
రచయిత<స్ట్రింగ్ బఫర్>రచయిత(బఫర్);

mydoc.అంగీకరించు(రచయిత);

// అవుట్‌పుట్ ప్రింట్ చేయండి
గంటలు::ఖరీదు <<బఫర్.GetString() <<గంటలు::endl;

తిరిగి 0;
}

ముగింపు

ఈ వ్యాసంలో, మేము క్లుప్తంగా చర్చించాము JSON డేటా, వస్తువు, శ్రేణి మరియు వాక్యనిర్మాణం. మనకు తెలిసినట్లుగా, C ++ లో JSON డేటా పార్సింగ్ కోసం స్థానిక పరిష్కారం లేదు; C ++ లో JSON డేటాను అన్వయించడానికి మేము రెండు వేర్వేరు లైబ్రరీలను ఉపయోగించాము. C ++ లో JSON డేటా పార్సింగ్ యంత్రాంగాన్ని ప్రదర్శించడానికి మేము మూడు విభిన్న ఉదాహరణలను చూశాము. న్లోమాన్ లైబ్రరీతో పోలిస్తే, రాపిడ్‌జసన్ చిన్నది, వేగవంతమైనది మరియు జ్ఞాపకశక్తికి అనుకూలమైనది.