JSON کو C ++ میں کیسے تجزیہ کریں۔

How Parse Json C



اس ٹیوٹوریل کا ارادہ JSON ڈیٹا کو سمجھنا اور JSON ڈیٹا کو C ++ میں کیسے تجزیہ کرنا ہے۔ ہم JSON ڈیٹا ، آبجیکٹ ، ارے ، JSON نحو پر تبادلہ خیال کریں گے ، اور پھر C ++ میں JSON ڈیٹا کی تجزیہ کے طریقہ کار کو سمجھنے کے لیے کئی کام کرنے والی مثالوں سے گزریں گے۔

JSON کیا ہے؟

JSON منظم طریقے سے ساختہ ڈیٹا کو ذخیرہ کرنے اور منتقل کرنے کے لیے ہلکے وزن کی متن پر مبنی نمائندگی ہے۔ JSON ڈیٹا کو آرڈر کردہ فہرستوں اور کلیدی ویلیو جوڑوں کی شکل میں پیش کیا جاتا ہے۔ JSON کا مطلب ہے۔ جے آوا ایس گھٹیا یا اچھالنا ن۔ اوٹیشن جیسا کہ پورا نام بتاتا ہے ، یہ جاوا اسکرپٹ سے ماخوذ ہے۔ تاہم ، JSON ڈیٹا زیادہ تر مقبول پروگرامنگ زبانوں میں تعاون یافتہ ہے۔







یہ اکثر سرور سے ڈیٹا کو ویب پیج پر منتقل کرنے کے لیے استعمال ہوتا ہے۔ XML کے مقابلے میں JSON میں سٹرکچرڈ ڈیٹا کی نمائندگی کرنا بہت آسان اور صاف ہے۔



JSON نحو قاعدہ

یہاں JSON نحو کے اصول ہیں:



  1. JSON ڈیٹا ہمیشہ کلیدی قیمت والے جوڑوں کی شکل میں ہونا چاہیے۔
  2. JSON ڈیٹا کوما سے الگ کیا گیا ہے۔
  3. ایک گھوبگھرالی تسمہ JSON آبجیکٹ کی نمائندگی کے لیے استعمال ہوتا ہے۔
  4. ایک مربع بریکٹ JSON Array کی نمائندگی کے لیے استعمال ہوتا ہے۔

JSON ڈیٹا کیا ہے؟

JSON ڈیٹا کو کلیدی قدر والے جوڑوں کی شکل میں پیش کیا جاتا ہے۔ یہ دوسری پروگرامنگ زبانوں میں لغت یا ہیش کی طرح ہے۔





نام: ڈریک۔

یہ سادہ JSON ڈیٹا کی ایک مثال ہے۔ یہاں کلید نام ہے اور ڈریک اسی قدر ہے۔ کلید ، یعنی نام اور قدر ، یعنی ڈریک کو بڑی آنت سے الگ کیا جاتا ہے۔



JSON فائل کی توسیع

JSON ڈیٹا عام طور پر .json کی توسیع کے ساتھ فائل میں محفوظ ہوتا ہے۔ مثال کے طور پر ، ملازم کا ڈیٹا ذخیرہ کرنے کے لیے ، آپ فائل کو صرف 'Employ.json' کا نام دے سکتے ہیں۔ یہ ایک سادہ ٹیکسٹ فائل ہوگی۔ اس کے بعد آپ اس JSON فائل کو اپنے کسی بھی پسندیدہ ٹیکسٹ ایڈیٹر میں کھول سکتے ہیں۔

JSON آبجیکٹ۔

JSON آبجیکٹ کچھ نہیں ہے لیکن JSON ڈیٹا گھوبگھرالی منحنی خطوط وحدانی میں بند ہے۔ یہاں ایک نمونہ JSON آبجیکٹ ہے:

{
نام۔:ڈریک،
ملازم کی ID:23547 اے۔،
فون: 23547۔،
شعبہ:مالیات
}

ایک JSON آبجیکٹ متعدد JSON ڈیٹا پر مشتمل ہو سکتا ہے۔ ہر JSON ڈیٹا کوما سے الگ کیا جاتا ہے۔ JSON ڈیٹا کو کلیدی قدر کے جوڑے کے طور پر پیش کیا جاتا ہے۔ کلید ، یعنی نام اور قدر ، یعنی ڈریک کو بڑی آنت سے الگ کیا جاتا ہے۔ مندرجہ بالا مثال میں ، چار کلیدی قدر کے جوڑے ہیں۔ پہلی کلید نام ہے ڈریک اس کے لیے متعلقہ قدر ہے۔ اسی طرح ، EmployeeID ، Phone ، اور Department دیگر تین چابیاں ہیں۔

JSON Array

ایک JSON صف میں کئی کوما سے جدا JSON اشیاء شامل ہوسکتی ہیں۔ JSON صف ایک مربع بریکٹ کے اندر بند ہے۔ آئیے JSON صف کی ایک مثال دیکھیں:

'طلباء':[
{'پہلا نام':'شان'، 'آخری نام':'براؤن'}،
{'پہلا نام':'ڈریک'، 'آخری نام':'ولیمز'}،
{'پہلا نام':'ٹام'، 'آخری نام':'ملر'}،
{پہلا نام:پیٹر،آخری نام:جانسن۔}
]

یہ JSON صف کی ایک مثال ہے۔ یہاں ، طلباء کو ایک مربع بریکٹ ، یعنی صف کے ساتھ بند کیا گیا ہے ، اور اس میں چار JSON اشیاء ہیں۔ ان اشیاء میں سے ہر ایک کو کلیدی قدر کے جوڑوں کی شکل میں پیش کیا جاتا ہے اور کوما سے الگ کیا جاتا ہے۔

ایک نمونہ JSON فائل۔

اب ، چونکہ ہم JSON ڈیٹا ، JSON آبجیکٹ ، JSON سرنی کو سمجھ چکے ہیں ، آئیے JSON فائل کی ایک مثال دیکھیں۔

{
پہلا نام:شان،
آخری نام:براؤن،
طالب علم کی شناخت: 21453۔،
شعبہ:کمپیوٹر ایس سی،
مضامین۔:[ریاضی،Phy،کیم۔]
}

C ++ میں لائبریریاں تجزیہ کرنا:

C ++ میں JSON ڈیٹا کو پارس کرنے کا کوئی مقامی حل نہیں ہے۔ تاہم ، JSON ڈیٹا کو C ++ میں تجزیہ کرنے کے لیے کئی لائبریریاں موجود ہیں۔ اس آرٹیکل میں ، ہم JSON ڈیٹا کو C ++ میں تجزیہ کرنے کے لیے دو مقبول ترین لائبریریوں پر غور کرنے جارہے ہیں۔ یہاں JSON ڈیٹا کو پارس کرنے کے لیے GitHub لنکس ہیں۔

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

آپ ان لائبریریوں کو ڈاؤن لوڈ کرنا چاہیں گے تاکہ ذیل میں دکھائی گئی مثالوں پر عمل کیا جا سکے۔

مثالیں

اب ، ہمارے پاس JSON ڈیٹا ، اشیاء ، صفوں اور دستیاب پارسنگ لائبریریوں کی بنیادی تفہیم ہے۔ آئیے اب C ++ میں JSON ڈیٹا کو پارس کرنے کے لیے چند مثالیں دیکھیں:

  • مثال 1: JSON کو C ++ میں پارس کریں۔
  • مثال -2: JSON کو C ++ میں پارس اور سیریلائز کریں۔
  • مثال 3: JSON کو C ++ میں پارس کریں۔

مثال -1 اور مثال 2 کے لیے ، ہم نلوہمان لائبریری کا استعمال کرنے جا رہے ہیں۔ مثال 3 کے معاملے میں ، ہم RapidJSON لائبریری استعمال کریں گے۔

مثال 1: JSON کو C ++ میں پارس کریں۔

اس مثال کے پروگرام میں ، ہم دکھائیں گے کہ C ++ میں JSON ڈیٹا کی اقدار تک کیسے رسائی حاصل کی جائے۔

#شامل کریں
#شامل کریں 'json.hpp'

json کا استعمال کرتے ہوئے=nlohmann::json؛

intمرکزی()
{

// jdEmployees
json jdEmployees=
{
{'پہلا نام'،'شان'}،
{'آخری نام'،'براؤن'}،
{'طالب علم کی شناخت'،21453۔}،
{'شعبہ'،'کمپیوٹر ایس سی۔'}
}؛

// اقدار تک رسائی حاصل کریں۔
گھنٹے::تارfName=jdEmployees.قدر('پہلا نام'، 'اوہ')؛
گھنٹے::تارنام۔=jdEmployees.قدر('آخری نام'، 'اوہ')؛
intsID=jdEmployees.قدر('طالب علم کی شناخت'، )؛
گھنٹے::تارمحکمہ=jdEmployees.قدر('شعبہ'، 'اوہ')؛

// اقدار پرنٹ کریں۔
گھنٹے::لاگت << 'پہلا نام: ' <<fName<<گھنٹے::endl؛
گھنٹے::لاگت << 'آخری نام:' <<نام۔<<گھنٹے::endl؛
گھنٹے::لاگت << 'طالب علم کی شناخت: ' <<sID<<گھنٹے::endl؛
گھنٹے::لاگت << 'شعبہ: ' <<محکمہ<<گھنٹے::endl؛

واپسی ؛
}

مثال -2: JSON کو C ++ میں پارس اور سیریلائز کریں۔

اس مثال کے پروگرام میں ، ہم دیکھیں گے کہ JSON کو C ++ میں تجزیہ اور سیریلائز کیسے کریں۔ ہم JSON ڈیٹا پارس کرنے کے لیے json :: parse () استعمال کر رہے ہیں۔

#شامل کریں
#شامل کریں 'json.hpp'
#شامل کریں

json کا استعمال کرتے ہوئے=nlohmann::json؛

intمرکزی()
{
// یہاں ایک JSON متن ہے۔
چارمتن[] =آر۔'(
{
'
کتاب': {
'
چوڑائی': 450 ،
'
اونچائی۔': 30 ،
'
عنوان۔':'ہیلو ورلڈ۔
'
سیرت ہے': جھوٹا ،
'
نمبر آف کاپیاں۔': 4 ،
'
لائبریری آئی ڈی۔': [2319 ، 1406 ، 3854 ، 987]
}
}
) '
؛

// آئیے JSON کی تجزیہ اور سیریلائز کریں۔
json j_complete=json::تجزیہ(متن)؛
گھنٹے::لاگت <<گھنٹے::سیٹ() <<j_ مکمل<<گھنٹے::endl؛
}

مثال 3: JSON کو C ++ میں پارس کریں۔

اب ، ہم دکھائیں گے کہ ریپڈ جے ایسون لائبریری کا استعمال کرتے ہوئے جے ایس او این سٹرنگ کو کیسے تجزیہ کیا جائے۔ RapidJSON اصل میں RapidXML سے متاثر تھا۔ اس مثال کے پروگرام میں ، ہم ایک JSON سٹرنگ کو DOM میں تجزیہ کر رہے ہیں۔ ہم نے mydoc of type Document کا اعلان کیا ہے اور پھر JSON سٹرنگ کو پارس کرنے کے لیے mydoc.parse () طریقہ استعمال کیا ہے۔

#شامل کریں
#شامل کریں 'Rapidjson/writer.h'
#ریپڈجسن/ڈاکومنٹ ایچ شامل کریں
#ریپڈجسن/سٹرنگ بفر ڈاٹ ایچ شامل کریں

نام کی جگہ ریپڈجسن کا استعمال کرتے ہوئے۔؛

intمرکزی()
{

const چار*json= '{'پہلا نام':'شان'،'آخری نام':'براؤن'،'ایم پی آئی ڈی': 21453 ،
'
شعبہ':'کمپیوٹر ایس سی'}'؛

// JSON سٹرنگ کو DOM میں پارس کریں۔
دستاویز mydoc؛
mydoc.تجزیہ(json)؛

// DOM سے سٹرنگ۔
سٹرنگ بفر بفر۔؛
لکھاری۔<سٹرنگ بفر۔>مصنف(بفر)؛

mydoc.قبول کریں۔(مصنف)؛

// آؤٹ پٹ پرنٹ کریں۔
گھنٹے::لاگت <<بفرگیٹ اسٹرنگ۔() <<گھنٹے::endl؛

واپسی ؛
}

نتیجہ

اس مضمون میں ہم نے مختصر بحث کی ہے۔ JSON ڈیٹا ، آبجیکٹ ، صف اور نحو۔ جیسا کہ ہم جانتے ہیں ، C ++ میں JSON ڈیٹا پارس کرنے کا کوئی مقامی حل نہیں ہے۔ ہم نے JSON ڈیٹا کو C ++ میں تجزیہ کرنے کے لیے دو مختلف لائبریریوں کا استعمال کیا ہے۔ ہم نے C ++ میں JSON ڈیٹا پارسنگ میکانزم کو ظاہر کرنے کے لیے تین مختلف مثالوں پر غور کیا۔ Nlohmann لائبریری کے مقابلے میں ، RapidJSON چھوٹا ، تیز ، اور میموری کے لیے دوستانہ ہے۔