كيفية تحليل JSON في C ++

How Parse Json C



الهدف من هذا البرنامج التعليمي هو فهم بيانات JSON وكيفية تحليل بيانات JSON في C ++. سنناقش بيانات JSON و Object و Array و JSON ثم ننتقل إلى عدة أمثلة عملية لفهم آلية تحليل بيانات JSON في C ++.

ما هو JSON؟

جسون هو تمثيل خفيف الوزن يعتمد على النص لتخزين ونقل البيانات المنظمة بطريقة منظمة. يتم تمثيل بيانات JSON في شكل قوائم مرتبة وأزواج مفتاح - قيمة. ترمز JSON إلى ي افا س مخطوطة أو bject ن otation. كما يشير الاسم الكامل ، فهو مشتق من JavaScript. ومع ذلك ، يتم دعم بيانات JSON في معظم لغات البرمجة الشائعة.







غالبًا ما يتم استخدامه لنقل البيانات من الخادم إلى صفحة الويب. من الأسهل والأكثر نظافة تمثيل البيانات المهيكلة في JSON من XML.



قاعدة بناء جملة JSON

فيما يلي قواعد بناء جملة JSON:



  1. يجب أن تكون بيانات JSON دائمًا في شكل أزواج مفتاح - قيمة.
  2. يتم فصل بيانات JSON بفاصلات.
  3. يتم استخدام قوس مجعد لتمثيل كائن JSON.
  4. يتم استخدام قوس مربع لتمثيل مصفوفة JSON.

ما هي بيانات JSON؟

يتم تمثيل بيانات JSON في شكل أزواج مفتاح - قيمة. هذا مشابه للقاموس أو التجزئة في لغات البرمجة الأخرى.





الاسم: دريك

هذا مثال على بيانات JSON البسيطة. المفتاح هنا هو الاسم ودريك هو القيمة المقابلة. المفتاح ، أي الاسم والقيمة ، أي دريك مفصولتان بنقطتين.



ملحق ملف JSON

عادةً ما يتم تخزين بيانات JSON في الملف بامتداد .json. على سبيل المثال ، لتخزين بيانات الموظف ، يمكنك ببساطة تسمية الملف باسم 'staff.json'. سيكون هذا ملف نصي بسيط. يمكنك بعد ذلك فتح ملف JSON هذا في أي من برامج تحرير النصوص المفضلة لديك.

كائن JSON

كائن JSON ليس سوى بيانات JSON المضمنة داخل الأقواس المتعرجة. فيما يلي نموذج لكائن JSON:

{
اسم:دريكو
هوية الموظف:23547aو
هاتف: 23547و
قسم:تمويل
}

يمكن أن يحتوي كائن JSON على عدة بيانات JSON. يتم فصل كل بيانات JSON بفاصلة. يتم تمثيل بيانات JSON كأزواج مفتاح - قيمة. المفتاح ، أي الاسم والقيمة ، أي دريك مفصولتان بنقطتين. في المثال أعلاه ، هناك أربعة أزواج ذات قيمة رئيسية. المفتاح الأول هو الاسم ؛ دريك هي القيمة المقابلة لها. وبالمثل ، فإن EmployeeID و Phone و Department هي المفاتيح الثلاثة الأخرى.

صفيف JSON

يمكن أن تحتوي مصفوفة JSON على عدة كائنات JSON مفصولة بفواصل. يتم وضع مصفوفة JSON داخل قوس مربع. دعونا نلقي نظرة على مثال على مصفوفة JSON:

'تلاميذ':[
{'الاسم الأول':'شون'و 'الكنية':'بنى'}و
{'الاسم الأول':'دريك'و 'الكنية':وليامز}و
{'الاسم الأول':'توم'و 'الكنية':'ميلر'}و
{الاسم الأول:نفذوالكنية:جونسون}
]

هذا مثال على مصفوفة JSON. هنا ، يتم إرفاق الطلاب بقوس مربع ، أي مصفوفة ، ويحتوي على أربعة كائنات JSON. يتم تمثيل كل عنصر من هذه الكائنات في شكل أزواج من المفاتيح والقيمة ويتم الفصل بينها بفاصلة.

نموذج ملف JSON

الآن ، نظرًا لأننا فهمنا بيانات JSON وكائنات JSON ومصفوفة JSON ، فلنلقِ نظرة على مثال لملف JSON:

{
الاسم الأول:شونو
الكنية:بنىو
هوية الطالب: 21453و
قسم:علوم الحاسوب.و
المواضيع:[رياضياتوPhyوتشيم]
}

تحليل المكتبات في C ++:

لا يوجد حل أصلي لتحليل بيانات JSON في C ++. ومع ذلك ، هناك العديد من المكتبات لتحليل بيانات JSON في C ++. في هذه المقالة ، سنبحث في المكتبتين الأكثر شيوعًا لتحليل بيانات JSON في C ++. فيما يلي روابط GitHub لتحليل بيانات JSON:

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

قد ترغب في تنزيل هذه المكتبات لتتمكن من تنفيذ الأمثلة الموضحة أدناه.

أمثلة

الآن ، لدينا فهم أساسي لبيانات JSON والكائنات والمصفوفات ومكتبات التحليل المتاحة. دعنا الآن نلقي نظرة على مثالين لتحليل بيانات JSON في C ++:

  • مثال 1: تحليل JSON في C ++
  • مثال 2: تحليل وتسلسل JSON في C ++
  • مثال 3: تحليل JSON في C ++

بالنسبة للمثال 1 والمثال 2 ، سنستخدم مكتبة nlohmann. في حالة المثال 3 ، سنستخدم مكتبة RapidJSON.

مثال 1: تحليل JSON في C ++

في هذا المثال البرنامج ، سنشرح كيفية الوصول إلى قيم بيانات JSON في C ++.

#يشمل
# تضمين 'json.hpp'

باستخدام json=nlohmann::json؛

intالأساسية()
{

// jdEmployees
json jd الموظفين=
{
{'الاسم الأول'و'شون'}و
{'الكنية'و'بنى'}و
{'هوية الطالب'و21453}و
{'قسم'و'علوم الكمبيوتر.'}
}؛

// الوصول إلى القيم
ساعات::سلسلةfName=الموظفون.القيمة('الاسم الأول'و 'وجه الفتاة')؛
ساعات::سلسلةl الاسم=الموظفون.القيمة('الكنية'و 'وجه الفتاة')؛
intمعزز=الموظفون.القيمة('هوية الطالب'و 0)؛
ساعات::سلسلةقسم=الموظفون.القيمة('قسم'و 'وجه الفتاة')؛

// اطبع القيم
ساعات::كلفة << 'الاسم الأول: ' <<fName<<ساعات::endl؛
ساعات::كلفة << 'الكنية: ' <<l الاسم<<ساعات::endl؛
ساعات::كلفة << 'هوية الطالب: ' <<معزز<<ساعات::endl؛
ساعات::كلفة << 'قسم: ' <<قسم<<ساعات::endl؛

إرجاع 0؛
}

مثال 2: تحليل وتسلسل JSON في C ++

في هذا المثال البرنامج ، سنرى كيفية تحليل JSON وتسلسلها في C ++. نحن نستخدم json :: parse () لتحليل بيانات JSON.

#يشمل
# تضمين 'json.hpp'
#يشمل

باستخدام json=nlohmann::json؛

intالأساسية()
{
// هنا نص JSON
شارنص[] =ص(
{
'
الكتاب': {
'
عرض': 450 ،
'
ارتفاع': 30 ،
'
عنوان':'مرحبا بالعالم
'
هو السيرة الذاتية': خاطئة،
'
NumOfCopies': 4 ،
'
معرفات المكتبة': [2319، 1406، 3854، 987]
}
}
) '
؛

// دعنا نحلل JSON ونسلسلها
json j_complete=json::تحليل(نص)؛
ساعات::كلفة <<ساعات::setw(4) <<j_complete<<ساعات::endl؛
}

مثال 3: تحليل JSON في C ++

الآن ، سنشرح كيفية تحليل سلسلة JSON باستخدام مكتبة RapidJSON. RapidJSON مستوحى في الأصل من RapidXML. في مثال هذا البرنامج ، نقوم بتحليل سلسلة JSON في DOM. لقد أعلنا عن mydoc من النوع Document ثم استخدمنا طريقة mydoc.parse () لتحليل سلسلة JSON.

#يشمل
# تضمين 'Rapjson / Writer.h'
# تضمين 'Rapjson / document.h'
# تضمين 'Rapidjson / stringbuffer.h'

باستخدام مساحة الاسم Rapidjson؛

intالأساسية()
{

مقدار ثابت شار*json= '{'الاسم الأول':'شون'،'الكنية':'بنى'،'معرف': 21453 ،
'
قسم':'علوم الحاسوب.'}'؛

// تحليل سلسلة JSON في DOM
وثيقة mydoc؛
mydoc.تحليل(json)؛

// DOM لسلسلة
StringBuffer العازلة؛
كاتب<StringBuffer>كاتب(متعادل)؛

mydoc.قبول(كاتب)؛

// طباعة الإخراج
ساعات::كلفة <<متعادل.GetString() <<ساعات::endl؛

إرجاع 0؛
}

استنتاج

في هذه المقالة ، ناقشنا بإيجاز جسون البيانات والعنصر والمصفوفة والبناء. كما نعلم ، لا يوجد حل أصلي لتحليل بيانات JSON في C ++ ؛ لقد استخدمنا مكتبتين مختلفتين لتحليل بيانات JSON في C ++. نظرنا في ثلاثة أمثلة مختلفة لإثبات آلية تحليل البيانات JSON في C ++. بالمقارنة مع مكتبة nlohmann ، فإن RapidJSON صغير وسريع وصديق للذاكرة.